強制轉換方法:1、使用ToString()、ToNumber()或ToBoolean()方法;2、使用String()、Number()或Boolean()方法;3、使用「 」或「- 」運算子;4、使用「if()」、「while()」等語句。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
1.ToString
對一般物件來說,除非自行定義toString方法,否則就會呼叫Object.prototype.toString()方法,如果物件有自己的toString方法,字串化就會呼叫該方法並使用其傳回值。
2.ToNumber
let a = { valueOf:function(){ return "42"; } }; let b = { toString:function(){ return "42"; } }; let c = [4,2]; c.toString = function(){ return this.join(""); //"42" }; Number(a); //42 Number(b); //42 Number(c); //42 Number(''); //0 Number([]); //0 Number(["abc"];//NaN
3.ToBoolean
#JavaScript中的值可以分為能被強制轉換為false的值和能被強制轉換為true的值兩類。
假值:
真值:除了上述清單的都可以理解為是真值,所有物件都是真值
let a1 = new Boolean( false ); let b1 = new Number( 0 ); let c1 = new String( "" ); let d1 = Boolean(a1 && b1 && c1); //true let a2 = []; let b2 = {}; let c2 = function(){}; let d2 = Boolean(a2 && b2 && c2); //true
#1.字串與數字之間的顯示轉換
字串與數字之間的轉換是透過String(..) 和Number(..) 這兩個內建函數。
除了String(..) 和Number(..) 以外,還有其他方法可以實作字串和數字之間的明確轉換:
let a = 42; let b = a.toString(); let c = "3.14"; let d = +c; b; // "42" d; // 3.14
a.toString() 是明確的,不過其中涉及隱式轉換。因為 toString() 對 42 這樣的基本型別值不適用,所以 JavaScript 引擎會自動為 42 建立一個封裝對象,然後對該對象呼叫 toString()。這裡顯式轉換含有隱式轉換。
2.顯示轉換為布林值
let a = "0"; let b = []; let c = {}; let d = ""; let e = 0; let f = null; let g; Boolean( a ); // true Boolean( b ); // true Boolean( c ); // true Boolean( d ); // false Boolean( e ); // false Boolean( f ); // false Boolean( g ); // false
雖然Boolean(..) 是明確的,但並不常用。明確強制類型轉換為布林值最常用的方法是!!
let a = "0"; let b = []; let c = {}; let d = ""; let e = 0; let f = null; let g; !!a; // true !!b; // true !!c; // true !!d; // false !!e; // false !!f; // false !!g; // false
【推薦學習:javascript高階教學】
1.字串與數字之間的隱含強制型別轉換
( 1) 運算子
即能用於數字加法,也能用於字串拼接
##如果的其中一個運算元是字串(或者透過對其呼叫ToPrimitive 抽像操作得到字串), 則執行字串拼接;否則執行數字加法。因為陣列的 valueOf() 運算無法得到簡單基本型別值,於是它轉而呼叫 toString()。因此下例中的兩個陣列變成了 "1,2" 和 "3,4"。將它們拼接後返回 "1,23,4"。let a = "42"; let b = "0"; a + b; // "420" let c = 42; let d = 0; c + d; // 42 let x = [1,2]; let y = [3,4]; x + y; // "1,23,4"可以使用運算子進行字串轉換,將數字和空字串"" 相來將其轉換為字串
let a = 42; let b = a + ""; b; // "42"
let a = { valueOf: function() { return 42; }, toString: function() { return 4; } }; a + ""; // "42" String( a ); // "4"(2)從字串強制類型轉換為數字的情況-是數字減法運算符,因此a - 0會將a強制類型轉換為數字。也可以使用a * 1和a /1,因為這兩個運算子也只適用於數字,只不過這樣的用法不太常見
let a = [3]; let b = [1]; a - b; // 2
2.隱式強制類型轉換為布林值
下面的情況會發生布林值隱式強制型別轉換:(1) if (..)語句中的條件判斷式。 (2) for ( .. ; .. ; .. )語句中的條件判斷表達式(第二個)。 (3) while (..) 和 do..while(..) 迴圈中的條件判斷表達式。 (4) ? :中的條件判斷表達式。(5) 邏輯運算子 ||(邏輯或)和 &&(邏輯與)左邊的運算元(作為條件判斷表達式)。
以上情況中,非布林值會被隱式強制型別轉換為布林值,遵循前面介紹過的 ToBoolean 抽像運算規則。
更多程式相關知識,請造訪:程式設計入門! !
以上是javascript怎麼進行強制型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!