Number()
规则:
-
true
转换为 1 ,false
转换为 0 -
undefined
转换为NaN
-
null
转换为 0 - 处理失败时返回
NaN
- 对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字
Number(true) // 1
Number(false) // 0
Number(undefined) // NaN
Number(null) // 0
Number(0111) // 73
Number(0x111) // 273
Number('111') // 111
Number('') // 0
Number('aaa') // NaN
Number({}) // NaN
将值转换为相应的基本类型值
- 先检查该值是否有
valueOf()
方法。如果有并且返回基本类型值,就使用该值进行强制类型转换。 - 如果没有
valueOf()
就使用toString()
的返回值(如果存在)来进行强制类型转换。 - 如果
valueOf()
和toString()
均不返回基本类型值,会产生TypeError
错误。
var a = {
valueOf: function(){
return "42";
}
};
var b = {
toString: function(){
return "42";
}
};
var c = [4,2];
c.toString = function(){
return this.join( "" ); // "42"
};
Number( a ); // 42
Number( b ); // 42
Number( c ); // 42
Boolean()
假值:
Boolean(undefined) // false
Boolean(null) // false
Boolean(false) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
真值:
Boolean(new String( "" )) // true
Boolean(new Number( 0 )) // true
Boolean(new Boolean( false )) // true
Boolean("false") // true
Boolean("0") // true
Boolean("''") // true
Boolean([]) // true
Boolean({}) // true
Boolean(function () {}) // true
网友评论