在看《jQuery技术内幕》的时候,看到一句话:
……这里使用等同运算符(===)来避免类型转换。
我在想javascript 中存在哪些类型转换呢?
javascript 中的数据类型
- 字符串
- 数字
- 布尔
- 数组
- 对象
- undefind
- null
javascript 中的原始类型
javascript 中有5种原始类型。
- undefined
- null
- String
- Number
- Object
(⊙o⊙)…当初面试时,为啥就答不出来呢?好气
类型转换
转为字符串
Boolean 值、数字和字符串的原始值的有趣之处在于它们是伪对象
而对象都有Object.prototype.toString()
返回对象的字符串表示 的方法
Boolean值、数字和字符串都有 toString()
方法,可以把它们的值转换成字符串。
转为数字
- Number()
- parseInt()/paraseFloat()
强制类型转换
ECMAScript 中可用的 3 种强制类型转换如下:
- Boolean(value) - 把给定的值转换成 Boolean 型;
- Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
- String(value) - 把给定的值转换成字符串;
Boolean()
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean()
函数将返回 true
。如果该值是空字符串、数字 0、undefined 或 null,它将返回false
。
Number()
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。
Number()
的转换会比较严格
>Number('123')
输出 123
>Number('123red')
输出 NaN
>parseInt('123')
输出 123
>parseInt('123red')
输出 123
String()
可把任何值转换成字符串
如:
>String(new Object)
输出 "[object Object]"
有关=== 和 ==
回到开头的===
。
===
不仅比较值是否相等,而且还比较类型是否相等。
==
比较值是否相等
var x = 2;
var obj = {
valueOf:function(){
return 2;
}
}
console.log(x == obj,x === obj);
//true false
== or !=
=== or !==
Always use 3 equals unless you have a good reason to use 2.
以后用===
来做判断吧~
扩充 if() 值的判断
(以上图片来自:JavaScript-Equality-Table)