各种数值类型转换成 布尔值:
undefined 和 null 转换成 布尔值都是 false
布尔值: true 是 true ,false 是 false;
数字: +0, -0 和NaN 都是转换成 false,其他的数字都是true
字符串: 空字符串转换成 false,其他的字符串都是true
对象: 转换成布尔值都是 true
例子:
function testTrue(val){
return val ? console.log('true') : console.log('false);
}
testTrue(true); // true
testTrue(false); // false
testTrue(new Boolean(false));// true ----对象转换成布尔值始终为true
testTrue(‘ ’); //false ----空字符串false
testTrue('false'); //true
testTrue(new String(' ')); //true 创建的是字符串对象,对象皆 true
testTrue(1); //true
testTrue(-1); // true
testTrue(NaN); //false
testTrue(new Number(NaN)); // true 创建的是 数字对象,true
testTrue(0); // false
testTrue({}); // true 对象皆为true
let obj = {
name: ' Pony '
};
testTrue(obj);// true
testTrue(obj.name); // true
testTrue(obj.age); //false 因为obj.age不存在
相等操作符 (== 和 ===)
不同类型的值用相等操作符比较后的结果
向Promise.all([…]) 传入空数组,它会立即完成,但是Promise.race([…]) 会挂住,且永远不会被决议。
font 属性的前三个值允许采用任意的顺序,但是后面的font-size 和 font-family 不仅要求 font-size 在前,font-family 在后作为声明中的两个值,而且font 声明中必须有这两个值,如果少了其中的某个属性,那么整个规则都将是无效的,很可能会被用户代理完全忽略。