string和number boolean
javascript 类型会根据赋值的进行转成相应的类型。
这一种比较明显,一眼就可以计算出其值。但是请看下面这种转换
number 类型如果和string 类型"+",将会直接number转成string
上述中“+” 比较特殊,如果是- 、* 、/ 呢;那么最终会转成什么类型呢。
如上 - 、*、/ 是number 中算术具有的。string和number是不能进行运算的,所以其值都是NaN。类型number。
boolean 和 string ,boolean类型自动转成了字符串“true”,但是为什么a不等于b呢
大家看下这个例子:
这里给出了转换的原则:(供参考)
1. 如果有一个操作数是布尔值,则在比较相等之前将其转换为数值————false转换为0,true转换为1; 2. 如果一个操作数是字符串,另一个操作符是数值,则在比较相等之前先讲字符串转换为数值; 3. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。
那么在比较字符串和布尔类型是就会:
发生这样的转换: Boolean true先转成number 1,在转成字符串“1” ,在进行比较。结果肯定是 false 了。
null 和string number Boolean undefined
从给出的例子可以看出:
null 在 string中 自动转成字符串"null",在number中表示数字 0,在逻辑判断中相当于false,在值表示时 和undefined 一样。注意是== 而不是===。
虽然javascript 在进行比较时,== 转换了其比较类型,但是其变量类型并没有因为== 而发生改变。
原文链接:https://www.f2er.com/js/48029.html