运算符
1、算术运算符:+、-、*、/、%、++、–
(1)+
var a = 1 + 2; // 3
var b = true + 2; // 3
var c = false + 2; // 2
var d = null + 2; // 2
var e = undefined + 2; // NaN
var g = NaN + 2; // NaN
字符串加任何值结果都是字符串
var f = ‘1’ + 2; // ’12’
var h = undefined + ‘2’ // ‘undefined2’
如果加号两边都引用类型的数据时,会调用引用类型的toString方法
var i = undefined + [1,2,3] // ‘undefined1,2,3’
var j = undefined + {age: 18} // ‘undefined[object Object]’
var k = undefined + function fn( ){ } // ‘undefinedfunction fn(){}’
(2)-、*、/、%
使用-、*、/、%运算符计算的时候,会先将运算符两边的数据进行Number( )转换
var a = 4 – 2; // 2
var b = ‘5’ – 4; // 1
var c = 3 – true; // 2
var d = 3 – null; // 3
var e = 3 – undefined;// NaN
(3)++、–
++(–)在前,先++(–)再运算或赋值;++(–)在后,先运算或赋值再++(–)
var b = 1;
var a = b ++;
console.log(a) // 1
var b = 1;
var c = ++ b;
console.log(c) // 2
var b = 1;
var d = b ++ + ++ b;
console.log(d) // 4
var b = 1;
var e = b ++ + ‘x’
console.log(e) // ‘1x’
var b = 1;
var f = ++ b + ‘y’
console.log(f) // ‘2y’
(4)正负号:+、-
使用正负号计算的时候,会先将正负号后面的数据进行Number( )转换,再进行计算
var a = + ‘1’ + 1
console.log(a) // 2
var b = – ‘3’ + 5
console.log(b) // 2
2、逻辑运算符:||、&&、!
(1)&&
先看第一个表达式转成布尔值的结果,如果结果为假,那么直接返回第一个表达式的值;如果第一个表达式的结果为真,且当前只有两个表达式,那么返回第二个表达式的值
let a = 1 && 2;
console.log( a ) // 2
let b = 1 && 2 && 3;
console.log( b ) // 3
let c = 0 && 2;
console.log( c ) // 0
let d = 1 && false && 2;
console.log( d ) // false
(2)||
先看第一个表达式转成布尔值的结果,如果结果为真,那么直接返回第一个表达式的值;如果第一个表达式的结果为假,且当前只有两个表达式,那么返回第二个表达式的值
let a = 1 || 2;
console.log( a ) // 1
let b = 1 || 2 || 3;
console.log( b ) // 1
let c = 0 || 2;
console.log( c ) // 2
let d = 1 || false || 2;
console.log( d ) // 1
(3)!
结果是布尔值,undefined,null,NaN,””,0,false转成布尔值是false,其它都为true
let a = ! 123;
console.log( a ) // false
let b = ! 0;
console.log( a ) // true
3、比较运算符:>、<、==、>=、<=、===、!=、!==
结果是布尔值
undefined > 0 // false
undefined < 0 // false
undefined == 0 // false
null > 0 // false
null < 0 // false
null == 0 // false
undefined == null // true
2 > ‘3’ // false
2 < ‘3’ // true
2 == ‘2’ // true
2 === ‘2’ // false