Skip to content

运算符

一元运算符

用于字符串时+ 运算符被称为级联运算符

当字符串和数字相加时:

一个数字和一个字符串相加将返回一个字符串:

  • '7' + 8 返回'78'
  • 911 + 7 + 'Porsche' 返回'918Porsche',先将前两个数字相加,再与字符串连接;
  • 'Porsche' + 911 + 7 返回'Porsche9117'(由于第一个值是字符串,因此后续的所有值都视为字符串)

++的前置和后置

++n 表示n先进行加一,再参加其后续的运算

n++ 表示在这一步的表达式运算中,n先保持原先的值,该表达式运算完成之后,n再进行加一


比较运算符

运算符描述
==等于,只判断左右两边的值,不判断类型
===等值等型,值和类型都进行判断
!=不相等(左右两边值不相等)
!==不等值和不等型
?三元运算符

其他常规的运算符不再进行说明


逻辑运算符

运算符描述
&&逻辑与:两个及多个条件都为真才返回true
`
!逻辑非,非真即假,非假即真

真假判别标准

  • 对象为真,nullundefined 为假;
  • 非空字符串为真,空字符串为假;
  • 非零为真,零、NaN 为假;

短路特性

短路:如果前一个值已经决定了结果,那就不去计算后一个值

  • && 的短路性:前一个值为假,整体为假,就不去计算后一个值了,直接返回前一个值,另外,当前一个值为真时,真假由后一个决定,因此返回后一个值

    js
    0 && "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 中,没有值的变量或者没有声明的变量,其值是 undefinedtypeof 也返回 undefined

typeof 运算符把对象、数组或 null返回 object,把数组返回为 object,因为在 JavaScript 中数组即对象


位运算符

运算符描述例子等同于结果十进制
&与(全1为1)5 & 10101 & 000100011
|或(有1为1)5 | 10101 | 000101015
~非(反转)~ 5~0101101010
^异或(不同为1)5 ^ 10101 ^ 000101004
<<零填充左位移5 << 10101 << 1101010
>>有符号右位移5 >> 10101 >> 100102
>>>零填充右位移5 >>> 10101 >>> 100102

JavaScript 使用 32 位有符号数,因此,在 JavaScript 中,~ 5 不会返回 10,而是返回 -6

Released under the MIT License.