运算符概念:一个运算符对应的只有一个运算元,那么它是 一元运算符。二元运算符同理
举个例子:
let x = 1,y = 2
alert(-x) // '-' 在这里面就是一元运算符
alert(x - y) // '-' 在这里面二元运算符
再举个例子:
let Love = 'I' + 'You' // 相当于使用二元运算符 '+' 连接字符串
alert(Love) // IYou
只有 ‘+’ 才能被用作字符串类型的连接,其它的都会强制转换成数字类型:
let str = 2 + '1' // '+' 在这里也是二元运算符
alert(str) // 21
// 但是只有 '+' 才能被用作字符串类型的连接,其它的都会强制转换成数字类型
let num1 = 6 - '2' // num1 = 4
let num2 = '6' / 2 // num2 = 3
let num3 = '6' / '2' // num3 = 3
运算符的数字转化:
console.log(+true) // 1
console.log(+'') // 0
再将一元运算符和二元运算符整合到一起试试:
let num1 = 1 + '1' // 11
let num2 = 1 + +'1' // 2 // 第一个 '+' 是二元运算符,第二个'+'是一元运算符,用于数字转化
let num3 = 1 - -'1' // 1-(-1) = 2
let str1 = '1' + -'1' // 即 '1' + -1 = '1-1' 这里 '+' 是作为二元运算符,用于字符串连接
附上摘抄于Mozilla的优先级表部分运算符的优先级表:
优先级 | 名称 | 符号 |
---|---|---|
17 | 一元加号 | + |
17 | 一元负号 | - |
16 | 求幂 | ** |
15 | 乘号 | * |
15 | 除号 | / |
13 | 加号 | + |
13 | 减号 | - |
3 | 赋值符号 | = |
可以看到,“一元加号运算符”的优先级是 17,高于“二元加号运算符”的优先级 13。这也是为什么表达式 “1 + +‘1’” 中的一元加号先生效,然后才是二元加法。