length = 0时,布尔值为false
比如在if判断时
const arr = []
if(arr.length){
console.log(1)
}
if(!arr.length){
console.log(2)
}
最后输出2
arr1 = []
console.log(arr1.length);
console.log(arr1.length === false);
console.log(arr1.length == false);
console.log(0 == false);
console.log(1 == true);
console.log(2 == true);
if(!arr1.length) console.log('!');
可见,0判断为false,1为true,但是===就不行了,
但是length为2的时候输出false,但是在if判断中却可以通过,如下
const arr = [1,2]
if (arr.length) {
console.log(1)
console.log('length',arr.length);
console.log(arr.length == true);
console.log(arr.length == false);
}
console.log('---------------');
if (!arr.length) {
console.log(2)
console.log('length',arr.length);
console.log(arr.length == true);
}
可见进入了第一个if中,说明arr.length为2时能进入if判断,但是2 确实 不 == true
const arr = [1,2]
if (arr.length) {
console.log(1)
console.log('length',arr.length);
console.log(arr.length == true);
}
console.log('---------------');
if (!arr.length) {
console.log(2)
console.log('length',arr.length);
console.log(arr.length == true);
}
console.log('---------------');
if(0){
console.log('0');
}
if(!0){
console.log('!0');
}
if(1){
console.log(111);
}
if(2){
console.log(222);
}
if(null){
console.log('null');
}
if(!null){
console.log('!null');
}
if(undefined){
console.log('undefined');
}
if(!undefined){
console.log('!undefined');
}
if(NaN){
console.log('NaN');
}
if(!NaN){
console.log('!NaN');
}
if(!false){
console.log('!false');
}
所以当判断语句是 null undefined NaN 0 或者直接是false的时候,就不能进入if或者while判断;
但是2、3、4等数字就不是1,不能==true,也可以进入判断
console.log( 1 == true);
console.log( 1 === true);
console.log( '1' == true);
console.log( '1' === true);
console.log('-----');
console.log(0 == false);
console.log(0 === false);
console.log( '0' == false);
console.log( '0' === false);
console.log('-----');
console.log( 2 == true);
console.log( '2' == true);
所以只有 0 和 1 的时候可以用true和false来(仅限于==),其他数值不行