javascript 中的类型转换

javascript 中的类型转换

隐式强制类型转换

1. 运算符会自动调用类型转换

普通运算符会自动把值转换为double

+ 号 在字符串和加法都有用到,如果有字符串, 最后结果则是字符串。

对象会自动调用 toString() 转换为字符串 或者自动调用 valueOf 方法转换为数字:

console.log("J" + {toString:function(){return "s";}}); // 'js'
 
console.log(2 * {valueOf:function(){return 3;}});      // 6

加号优先调用 valueOf

var obj = {
  toString: function toString() {
    return "s";
  }, 
  valueOf: function valueOf() {
    return 3;
  } 
};
console.log('a' + obj); // a3

真值运算 truthiness

if、|| 、&& 等逻辑运算符需要布尔值作为操作参数, 但实际上可以接受任何值。 javascript按照简单的规则将值转换。 大多数的Javascript对象都是真值, 对于字符串和数字以外的其他对象,真值运算不会隐式调用任何强制类型转换方法。 javascript 中有7个假值:false, 0 , -0 , “” , NaN , null 和 undefined。其他所有都是真值。数字和字符串可能为假值, 所以使用真值运算判断是否定义不是绝对安全的。 判断一个值是否定义, 可以使用typeof 或者与undefined 进行比较 而不是真值运算


if(typeof x === "undefined"){

}

if( x === undefined ){

}

Table of Contents