空的数组和对象字面量转换为布尔值得一点疑惑

var  o={};

1, alert(o== true);//弹出false

2, if(arr){

          alert(o==false)//正确弹出,并且还是弹出false;

      }

上面的例子都能正常运行,不是冲突了吗?

var arr=[];

1,alert(arr==true)//弹出false,

2,if(arr){

alert(arr==false)//正确弹出,并且还是弹出true

}

夜千寻
浏览 1775回答 2
2回答

柠檬酸钠

在if语句中并不是把o和arr转换为布尔值,而是和undefined作比较,如果定义执行if内的语句,未定义则跳过。和arr或者o里面是否有内容无关

qq_大寒_2

var  o={};//空对象。 alert(o== true);//弹出false 比较运算,两个方面,值比较,类型比较,都不符合所以是false; var arr=[]; alert(arr==true)//弹出false, 同上道理;//////////////////////////////////////////var  o={}; var arr=[]; if(arr){           alert(o==false)//正确弹出,并且还是弹出false;       } //if(条件判断)圆括号里面执行一定是true;才可以执行下面函数体中的命令,执行结果真假,同上。////////////////////var  o={}; var arr=[]; if(arr){ alert(arr==false)//正确弹出,并且还是弹出true } //执行结果,类型不相等,值相等,满足其一,所以弹出true;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript