运算符
一元运算符
用于字符串时+
运算符被称为级联运算符
当字符串和数字相加时:
一个数字和一个字符串相加将返回一个字符串:
'7' + 8
返回'78'
;911 + 7 + 'Porsche'
返回'918Porsche'
,先将前两个数字相加,再与字符串连接;'Porsche' + 911 + 7
返回'Porsche9117'
(由于第一个值是字符串,因此后续的所有值都视为字符串)
++
的前置和后置
++n
表示n
先进行加一,再参加其后续的运算
n++
表示在这一步的表达式运算中,n
先保持原先的值,该表达式运算完成之后,n
再进行加一
比较运算符
运算符 | 描述 |
---|---|
== | 等于,只判断左右两边的值,不判断类型 |
=== | 等值等型,值和类型都进行判断 |
!= | 不相等(左右两边值不相等) |
!== | 不等值和不等型 |
? | 三元运算符 |
其他常规的运算符不再进行说明
逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑与:两个及多个条件都为真才返回true |
` | |
! | 逻辑非,非真即假,非假即真 |
真假判别标准
- 对象为真,
null
、undefined
为假; - 非空字符串为真,空字符串为假;
- 非零为真,零、
NaN
为假;
短路特性
短路:如果前一个值已经决定了结果,那就不去计算后一个值
&&
的短路性:前一个值为假,整体为假,就不去计算后一个值了,直接返回前一个值,另外,当前一个值为真时,真假由后一个决定,因此返回后一个值js0 && "a" // 0 为假,返回 0 "a" && 0 // "a" 为真,返回 0
||
的短路性:前一个值为真,整体为真,就不去计算后一个值了,直接返回前一个值,另外,当前一个值为假时,真假由后一个决定,因此返回后一个值js"a" || 0 // "a" 为真,返回 "a" 0 || "a" // 0 为假,返回 "a"
短路赋值:(只有js
语言是支持的)
js
let a = 1, b = 0;
let f = a || b; //js语法中就会将为真的值赋值给f
console.log(f) // 结果为 1
js
// 给函数提供值的时候,输出对应数量的*,如果不给函数提供值,默认输出5个*
// 该方法通常在es5中使用
function star(num) {
return "*".repeat(num || 5);
}
console.log(star(2)); // **
console.log(star()); // *****
// 在新版的方式中,可以通过以下的方式:
function star(num = 5) {
return "*".repeat(num);
}
条件(三元)运算符
基于某些条件向变量赋值的条件运算符:value = (condition) ? value1:value2
满足condition
条件value
的值赋为value1
;不满足condition
条件value
的值赋为value2
类型运算符
运算符 | 描述 |
---|---|
typeof | 返回变量的类型 |
instanceof | 返回 true ,如果对象是对象类型的实例(原型链上有没有这个属性) |
typeof
运算符对数组返回 "object"
,因为在 JavaScript
中数组属于对象,但是可以通过instanceof
来进行进一步的判断:
js
let one = [];
let two = {};
console.log(typeof one) // 返回object
console.log(typeof two) // 返回object
console.log(one instanceof Array) // 返回true,对象是否由Array构造函数实现出来的
在 JavaScript
中,没有值的变量或者没有声明的变量,其值是 undefined
,typeof
也返回 undefined
typeof
运算符把对象、数组或 null
返回 object
,把数组返回为 object
,因为在 JavaScript
中数组即对象
位运算符
运算符 | 描述 | 例子 | 等同于 | 结果 | 十进制 |
---|---|---|---|---|---|
& | 与(全1为1) | 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | 或(有1为1) | 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | 非(反转) | ~ 5 | ~0101 | 1010 | 10 |
^ | 异或(不同为1) | 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
<< | 零填充左位移 | 5 << 1 | 0101 << 1 | 1010 | 10 |
>> | 有符号右位移 | 5 >> 1 | 0101 >> 1 | 0010 | 2 |
>>> | 零填充右位移 | 5 >>> 1 | 0101 >>> 1 | 0010 | 2 |
JavaScript
使用 32 位有符号数,因此,在JavaScript
中,~ 5 不会返回 10,而是返回 -6