5 个回答
var str = "hello";
console.log(str == true);

if (str) {
    console.log("if true");
}

// false
// if true

也就是说,上面的 == 判断并不是把 str 转换为布尔型来判断的,但是下面 if 语句的条件必须是布尔弄,所以是转换为布尔型来判断的,那么试试这个

console.log("true" == true);
console.log("false" == false);

// false
// false

很显示,== 也不是把布尔型转换为字符串来比较的……

其实 == 的比较确实是转换成字符串来比较但,但是在布尔型转换为字符串之前,要先转换成 Number,所以下面的实验就成功了

console.log("1" == true);
console.log("0" == false);

// true
// true

变量为null或者undefined时,用比较运算符时才会做转义成false

在javascript里面,做逻辑判断的时候,null,undefined,""空字符串,0,NaN都默认是false

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题