var str = "hello"; console.log(str == true); if (str) { console.log("if true"); } // false // if true
也就是说,上面的 == 判断并不是把 str 转换为布尔型来判断的,但是下面 if 语句的条件必须是布尔弄,所以是转换为布尔型来判断的,那么试试这个
==
str
if
console.log("true" == true); console.log("false" == false); // false // false
很显示,== 也不是把布尔型转换为字符串来比较的……
其实 == 的比较确实是转换成字符串来比较但,但是在布尔型转换为字符串之前,要先转换成 Number,所以下面的实验就成功了
Number
console.log("1" == true); console.log("0" == false); // true // true
变量为null或者undefined时,用比较运算符时才会做转义成false
是时候祭出这个大杀器了:https://dorey.github.io/JavaScript-Equality-Table/点上边的三个 tab 可以分别看到 ==, ===, if() 的各种比较结果
另外,除非有明确的理由,否则最好使用 === 进行比较
看这个吧:http://stackoverflow.com/questions/19839952/all-falsey-values-in-javascript
这个答案把javascript所有的falsy value 都列出来了
在javascript里面,做逻辑判断的时候,null,undefined,""空字符串,0,NaN都默认是false
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(5)
也就是说,上面的
==
判断并不是把str
转换为布尔型来判断的,但是下面if
语句的条件必须是布尔弄,所以是转换为布尔型来判断的,那么试试这个很显示,
==
也不是把布尔型转换为字符串来比较的……其实
==
的比较确实是转换成字符串来比较但,但是在布尔型转换为字符串之前,要先转换成Number
,所以下面的实验就成功了变量为null或者undefined时,用比较运算符时才会做转义成false
是时候祭出这个大杀器了:
https://dorey.github.io/JavaScript-Equality-Table/
点上边的三个 tab 可以分别看到 ==, ===, if() 的各种比较结果
另外,除非有明确的理由,否则最好使用 === 进行比较
看这个吧:http://stackoverflow.com/questions/19839952/all-falsey-values-in-javascript
这个答案把javascript所有的falsy value 都列出来了
在javascript里面,做逻辑判断的时候,null,undefined,""空字符串,0,NaN都默认是false