if ('hello') {
console.log('hello')
}
输出hello。
这里if语句括号里的条件转化为逻辑上的
布尔值作为判断标准,真则输出第一项,假则第二项。
if ('') {
console.log('empty')
}
''空字符串为假,输出不了第二项。
if (' ') {
console.log('blank')
}
输出blank,在这里' '有空白字符的空字符串为真的,跟单独测试它的布尔值是冲突的。这是为什么呢?等下面讲“==”的时候,就明白了,测试时,用的是
' ' == false
然后得到一个真,这里的==让这个成立了,等到了下面,就明白了!
if ([0]) {
console.log('array')
}
输出array,在这里[0]值为真,但是脱离if后,布尔值也是假的,同上面的情况,也是先特殊处理对待吧。
if (0.00) {
console.log('0.00')
}
无法输出,这里为假,符合它本身的布尔值。
小结:这些都是典型错误写法,写的时候要像这样
if (a === ' '){
,,,,,,,,,,,
}
不要写这种——
if ( a ),,,,,,,
另外,这里的原理是——
undefined false
Null false
Boolean 直接判断
Number +0,-0,NaN为false,其他为true
String ''为假其他为真
Object true
没有真实值的都为假,除了' ' ,[ ]。有真实值的都为真,除了数值正负0。我觉得只是想让if语句更有意义,有应用价值,才会让' '或者[0]的布尔值不同于以往。
==的判断——
规则就是等号两边的全都向着数字去转化,不顾一切地转化,最后再比较,所以,以后在if(a == b)会更麻烦,直接写成if (a === b)!
原理——
null == undefined
true
Number (null)
0
Number(undefined)
NaN
Boolean中的:
Number (true)
1
Number(false)
0
String转化的结果是NaN或数字。
Object用其valueOf值或toString值。
练习——
'' == 0
真的。''转数字是0。
' ' == 0
真的。' '转数字是0。
'' == true
false,true转成1。
'' == false
true,false转成0。
' ' == true
false
' ' == false
true
小结:它两的数值都是0,布尔值也都是假。
!' ' == true
取反的优先级大,先取反,转化成布尔,' '的布尔是真,取反为假,数值为0,真的数值为1,不等。
!' ' == false
先取反,得0, false数值化也是0.为真。
'hello' == true
数值转化得NaN == 1,false
'hello' == false
同上,假。
'0' == true
数值化为0 == 1,false
'0' == false
同上,真。
同理——
'0.00' == false
true
'00' == false
true
undefined == null
不用转,直接规定为真。
{} ==true
数值转化为NaN和1,假。
[] == true
数值转化为0和1,假。
var obj ={
a : 0,
valueOf: function(){return 1}
}
obj == ' [object Object]'
数值转化,obj取valueOf值,为1。
右边其实是字符串,转值为NaN。
不等,为假。
obj == 1
同上,为真。
obj == true
同上,又true转化为1,所以为真。
最后把前面的貌似的冲突来解释下——
规定说了:
' '的布尔值为真,当时验证用的是
' ' == false
运行得到了true,也就是为假,所以冲突了,源于 == 的用法比较的不是布尔值了,比较的是趋向对目标的数值转化的结果的比较了,都是0,所以这句话是真,但是证明不了两者间的布尔值哦,那布尔值如何得到??
请记结论就好了。
至于那个[0]也是如此的套路了。
这里的启发是什么?
慎用 ==,还有if (a)也经常出错,都不如if (a === b)。
包括练习题,那些写法都是容易产生歧义的,让人看不懂,自己写就要,写的有逻辑,还要明显体现,用小括号哦。
js类型转换练习
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...