JavaScript表达式与运算符篇

JavaScript表达式与运算符篇


本文记录的是JavaScript官网学习中的表达式与运算符篇

运算符

JavaScript 拥有如下类型的运算符。本节描述了运算符和运算符的优先级。

JavaScript 拥有二元和一元运算符和一个特殊的三元运算符(条件运算符)。

赋值运算符

赋值运算符将它右边操作数的值赋给它左边的操作数。最简单的赋值运算符是等于(=),它将右边的操作数值赋给左边的操作数。

还有一些复合赋值操作符,它们是下表列出的这些操作的简写:

名字简写的运算符含义
赋值x = yx = y
加法赋值x += yx = x + y
减法赋值x -= yx = x - y
乘法赋值x *= yx = x * y
除法赋值x /= yx = x / y
求余赋值x %= yx = x % y
求幂赋值x **= yx = x ** y
左移位赋值x <<= yx = x << y
右移位赋值x >>= yx = x >> y
无符号右移位赋值x >>>= yx = x >>> y
按位与赋值x &= yx = x & y
按位异或赋值x ^= yx = x ^ y
按位或赋值`x= y`
逻辑与赋值x &&= f()x && (x = f())
逻辑或赋值`x
逻辑空赋值x ??= f()x ?? (x = f())

解构

对于更复杂的赋值,解构语法是一个能从数组或对象对应的数组结构或对象字面量里提取数据的 Javascript 表达式。

var foo = ["one", "two", "three"];

// 不使用解构
var one = foo[0];
var two = foo[1];
var three = foo[2];

// 使用解构
var [one, two, three] = foo;
比较运算符

比较运算符比较它的操作数并返回一个基于表达式是否为真的逻辑值。

操作数可以是数字,字符串,逻辑,对象值。字符串比较是基于标准的字典顺序,使用 Unicode 值。在多数情况下,如果两个操作数不是相同的类型,JavaScript 会尝试转换它们为恰当的类型来比较。这种行为通常发生在数字作为操作数的比较。类型转换的例外是使用 ===!== 操作符,它们会执行严格的相等和不相等比较。这些运算符不会在检查相等之前转换操作数的类型。

运算符描述返回 true 的示例
等于 Equal (==)如果两边操作数相等时返回 true。3 == var1 "3" == var1 3 == '3'
不等于 Not equal (!=)如果两边操作数不相等时返回 truevar1 != 4 var2 != "3"
全等 Strict equal (===)两边操作数相等且类型相同时返回 true。参见 Object.is and sameness in JS.3 === var1
不全等 Strict not equal (!==)两边操作数不相等或类型不同时返回 true。var1 !== "3" 3 !== '3'
大于 Greater than (>)左边的操作数大于右边的操作数返回 truevar2 > var1 "12" > 2
大于等于 Greater than or equal (>=)左边的操作数大于或等于右边的操作数返回 truevar2 >= var1 var1 >= 3
小于 Less than (<)左边的操作数小于右边的操作数返回 truevar1 < var2 "2" < 12
小于等于 Less than or equal (<=)左边的操作数小于或等于右边的操作数返回 truevar1 <= var2 var2 <= 5
算术运算符

算术运算符使用数值 (字面量或者变量) 作为操作数并返回一个数值。

运算符描述示例
求余(%二元运算符。返回相除之后的余数。12 % 5 返回 2。
自增(++一元运算符。将操作数的值加一。如果放在操作数前面(++x),则返回加一后的值;如果放在操作数后面(x++),则返回操作数原值,然后再将操作数加一。var x=3; console.log(++x); //4 console.log(x); //4 var y=3; console.log(y++); //3 console.log(y); //4
自减(--一元运算符。将操作数的值减一。前后缀两种用法的返回值类似自增运算符。var x=3; console.log(–x); //输入 2,x=2var y=3;console.log(y–);//输出 3,x=2;
一元负值符(-一元运算符,返回操作数的负值。var x=3; console.log(-x); //输入 -3
一元正值符(+)一元运算符,如果操作数在之前不是数值,试图将其转换为数值。console.log( +'3' ); // 3 console.log( '3' ); // '3' console.log(+true); // 1
指数运算符(**)计算底数(base)的指数(exponent)次方,表示为 base^exponent2 ** 3 返回 810 ** -1 返回 0.1
位运算符

位运算符将它的操作数视为 32 位元的二进制串(0 和 1 组成)而非十进制八进制或十六进制数。

OperatorUsageDescription
按位与 ANDa & b在 a,b 的位表示中,每一个对应的位都为 1 则返回 1,否则返回 0.
按位或 OR`ab`
按位异或 XORa ^ b在 a,b 的位表示中,每一个对应的位,两个不相同则返回 1,相同则返回 0.
按位非 NOT~ a反转被操作数的位。
左移 shifta << b将 a 的二进制串向左移动 b 位,右边移入 0.
算术右移a >> b把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位。(译注:算术右移左边空出的位是根据最高位是 0 和 1 来进行填充的)
无符号右移 (左边空出位用 0 填充)a >>> b把 a 的二进制表示向右移动 b 位,丢弃被移出的所有位,并把左边空出的位都填充为 0
逻辑运算符

逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。不过实际上&&||返回的是一个特定的操作数的值,所以当它用于非布尔值的时候,返回值就可能是非布尔值。

运算符范例描述
逻辑与 (&&)expr1 && expr2(逻辑与) 如果 expr1 能被转换为 false,那么返回 expr1;否则,返回expr2。因此,&&用于布尔值时,当操作数都为 true 时返回 true;否则返回 false.
逻辑或 (``)
逻辑非 (!)!expr(逻辑非) 如果操作数能够转换为 true 则返回 false;否则返回 true。

能被转换为false的值有null, 0, NaN, 空字符串 (“”) 和undefined

字符串运算符

除了比较操作符,它可以在字符串值中使用,连接操作符(+)连接两个字符串值相连接,返回另一个字符串,它是两个操作数串的结合。

console.log("my " + "string"); // console logs the string "my string".

简写操作符 += 也可以用来拼接字符串,例如:

var myString = "alpha";

myString += "bet"; // 返回 "alphabet"
条件(三元)运算符

条件运算符是 JavaScript 中唯一需要三个操作数的运算符。运算的结果根据给定条件在两个值中取其一。语法为:

条件 ? 值 1 : 值 2

如果条件为真,则结果取值 1。否则为值 2

表达式

表达式是一组代码的集合,它返回一个值。

每一个合法的表达式都能计算成某个值,但从概念上讲,有两种类型的表达式:有副作用的(比如赋值)和单纯计算求值的。

JavaScript 有以下表达式类型:

  • 算数:得出一个数字,例如 3.14159。(通常使用算数运算符
  • 字符串:得出一个字符串,例如,“Fred” 或 “234”。(通常使用字符串运算符。)
  • 逻辑值:得出 true 或者 false。(经常涉及到逻辑运算符。)
  • 基本表达式:javascript 中基本的关键字和一般表达式。
  • 左值表达式:分配给左值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒尘&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值