如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。在工作中,我们可以直接用这种写法去做判断,比去在if语句中就可以很好的用这种方式。下面列了几个例子,是常见的用法。
undefined
null
false
0
NaN
""或''(空字符串)
需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
for example:
var b='';
if(!b){
console.log('空值默认是false');
}
var c=NaN;
if(!c){
console.log('NAN也是false');
}
if(!0){
console.log("0也是false");
}
if(!undefined){
console.log('undefined也是false');
}
if(!null){
console.log('null也是false');
}
if(!false){
console.log('false本身');
}
if([]){
console.log("空数组是true");
}
if({}){
console.log('空对象也是true');
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
// 如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
// undefined
// null
// false
// 0
// NaN
// ""或''(空字符串)
// 需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
var b='';
if(!b){
console.log('空值默认是false');
}
var c=NaN;
if(!c){
console.log('NAN也是false');
}
if(!0){
console.log("0也是false");
}
if(!undefined){
console.log('undefined也是false');
}
if(!null){
console.log('null也是false');
}
if(!false){
console.log('false本身');
}
if([]){
console.log("空数组是true");
}
if({}){
console.log('空对象也是true');
}
</script>
</body>
</html>
网友评论