标签:
Object 的 valueOf 方法
valueOf()
函数返回指定对象的原始值。
JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。因此,不同类型对象的valueOf()
方法的返回值和返回值类型均可能不同。
Object 的 toString() 方法
toString()
函数的返回值为String类型。返回当前对象的字符串形式。
JavaScript的许多内置对象都重写了该函数,以实现更适合自身的功能需要。
"==" 与 "==="
"===" 和 "==" 都是用来比较两个值是否相等。前者称为严格相等运算符,判断是否严格相等;后者称为相等运算符,判断是否相等,这个是允许类型转换的。
"===" 这个判断比较简单
"==" 这个比较复杂
如果都是引用类型,或者同是基本类型,同"==="
null 和 undefined 相等
对象转换为原始值
对象转换为boolean比较简单,都是为true
对象转换为数字,先调用valueOf方法,如果为原始值,转换为数字(需要的话);不成功则调用toString()方法,如果为原始值,转换为数字(需要的话),也不成功就抛出异常
对象转换为字符串,同样的,先调用toString()方法,如果为原始值,转换为字符串(需要的话);不成功则调用valueOf()方法,,如果为原始值,转换为字符串(需要的话),也不成功就抛出异常
转换的时候到底转换为数字还是字符串,这个看情况需要。
举几个例子
new Date() + 1 //"Tue Aug 11 2015 23:35:47 GMT+0800 (中国标准时间)1"
//+ 期望前面的值是一个字符串,调用的Date的toString()方法
+new Date() //1439307361984
//+ 期望后面的值是一个数字,调用的Date的valueOf()方法处理
举几个"=="的例子
[] == ![] //第一步:![] 转换为boolean值为false //第二步:false 转换为数字为 0 //第三步:[] 转换为数字为 0 //判断为true ,第二步和第三步谁先都没有关系 "1" == true // true 转换为 1 // "1" 转换为 1 "1,2" == [1,2] // [1,2] 转换为字符串 "1,2"
标签:
原文地址:http://www.cnblogs.com/ximuncu/p/4722818.html