js的运算法则
1. 相加:
- 一个string和number相加,会自动转为string,最后返回的是一个字符串
- 其他的相加返回的是number
2.进制间的转换
3.比较运算
3.1字符串和数值进行比较
3.2undefined(null的派生子类)和null比较
3.3字符串和字符串比较(拿第一位的ASCII码进行比较)
3.4布尔类型的值和null进行比较
3.5先转换数据类型再比较
3.6null和undefined跟0进行比较
4.逻辑运算
4.1 ||运算
4.2 与运算
4.3 !运算
有true则取第一个出现的值,全为false则取最后一个(遵循||运算,有真则为真,全假才假)
点击查看代码
//有true则返回true
var a=10, b=30;
console.log(a>b || 20);//20 前面是false,后面是true
console.log(0 || 10);//10
//如果两个都是false,取最后一个
console.log(undefined || "");//""
//如果两个都为true,则取第一个为true的值(||运算是有true则直接返回)
console.log('a'||'b');//a
console.log("" || "false" || "true");//false 空字符串是false,所以继续找下一个结果为true的值
//三目运算和逻辑运算优先级一样
var strr=(10>20? '':'123') || (30>20? '':'456');
console.log(strr);//123 相当于('123' || '')
取第一个为false的值(只要有false则取第一个为false的值,无论后面有没有true),全为true则取最后一个(遵循&&运算,有假则为假,全真才真)
点击查看代码
console.log(10 && 30);//全为true,取最后一个
console.log(0 && '');//全为false,取第一个
console.log(undefined && null);//undefined
console.log(null && 2);//null 有false则取第一个为false的值
console.log(2 && NaN);//NaN
console.log(3 && 'false' && undefined && null);//undefined
会转成boolean类型
console.log(!123);//false