js中有==和!=来比较数字和字符串是否相等,但是在js中比较不同类型的值,会产生不同的结果。
console.log("1"==1)
返回 true
console.log(0==false)
返回true
这些结果都是为真,原因如下
js的隐式类型转换
js属于对类型要求不高的语言,不同于Java,c这种强制形的语言。所以编写js代码的时候,不需要指定数据类型,在js引擎解析代码的时候,将自动转换为“相应的”数据类型——————隐式类型转换。
例如字符串与数字的相连
moment+1
返回“moment1”
字符串“moment”后面加了数字1,形成了字符串“moment1”,是将数字1转换成了字符串“1‘,然后与字符串”moment“相连。
"1"==true
返回:true
(1)当使用==或者!=运算时,在比较的值不是相同类型的时候,js则是将每个值转换为相同的类型---------”转型“
(2)当使用===的方法则是比较类型和数值是否完全相同————”完全相等“
例
"1" === 1
返回false
返回 false,因为字符串 "1" 和数字 1 并非具有相同的类型和值。
例
0 === false
返回false
返回 false,因为数字 0 和布尔值 false 并非具有相同的类型和值。
网友评论