字符串拼接
const a = 100 + '100'; // '100100'
const b = 100 + 10; // 110
const c = true + '100'; // 'true100'
只要有字符串运算就不在是加法,而是字符串拼接
== 运算符
100 == '100' //true
0 == '' //true
0 == false //true
false == '' //true
null == undefined //true
== 会类型转换尽量让值去相等
=== 运算符
// 除了==null外,其余全部使用 ===
const obj = { x:100 }
if (obj.a == null) {
//这里相当于 obj.a === null || obj.a === undefined,简写形式
//这是jquery源码中推荐的写法
}
if语句
truly变量:两步非运算等于true( !!a === true
)的变量
falsely变量:两步非运算等于false (!!a === false
) 的变量
// 以下是falsely变量。除此之外都是truly变量
!!0 === false
!!NaN === false
!!'' === false
!!null === false
!!undefined === false
!!false === false
if语句判断的就是falsely变量和truly变量,不是判断true和false
// truly变量
var a = true;
if(a){
//....
}
var b = 100;
if (b) {
//....
}
// falsely变量
var c = '';
if (c) {
//...
}
逻辑运算
console.log(10 && 0); //0
console.log('' || 'abc'); //abc
console.log(!window.acb); //true
// 判断一个变量会被当做true还是false
var a = 100;
console.log(!!a);//true
逻辑运算和if语句一样也是判断falsely变量和truly变量