#4 Type Coercion

6338 ワード

📋 タイプコラボレーション(強制タイプ変換)


タイプ強制変換は、あるタイプから別のタイプに値を変換するプロセスです.
ex)文字列は数字、オブジェクトはBoolean
Primitiveもオブジェクトも、すべてのタイプが強制タイプの有効なトピックです.

📋 明示的強制


Javascriptはタイプ変換を強制と呼ぶため、暗黙的および明示的強制を区別します.
明示的強制
コードでは、タイプ変換は明らかに意図的です.
ex) Number(value), String(value)
暗示の強制
他のタイプ間で自動的に変換できます.
タイプ変換は、他の意図的な副作用によって発生する場合である.

let a = 42;
let b = a + "";		// 암시적 강제 implicit

let c = String(a);	// 명시적 강제 explicit

console.log(25 - "1") // 24
console.log("" == true) // false 빈 String은 false
console.log(0 == true) // 0은 false
console.log(undefined,null,NaN == true) // false
console.log(true + false) // 1
console.log(12 / "6") // 2 
console.log(15 + 4 + "number") // 19number
console.log([1] > null) // true
console.log({}+[]+{}+[1]) // '0[object Object]1'
==このbooleanに遭遇すると、数値に変換されます.

console.log("1" == 1) // true
 
console.log("true" == true) // false

💡 ===暗黙的強制(強制規則)は回避できます。

console.log("1" === 1) // false
console.log(true === 1) // false