运算符(一元 二元)

本文介绍了JavaScript中的一元和二元运算符,重点讲解了加法运算符在不同类型运算元间的转换规则,以及一元加号如何用于非数字值的转换。示例展示了如何正确进行数字运算,避免字符串合并。此外,还提及了逗号运算符的作用和优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算元 —— 运算符应用的对象。比如说乘法运算 5 * 2,有两个运算元:左运算元 5 和右运算元 2。有时候人们也称其为“参数”而不是“运算元”。

如果一个运算符对应的只有一个运算元,那么它是 一元运算符。比如说一元负号运算(unary negation)-,它的作用是对数字进行正负转换

如果一个运算符拥有两个运算元,那么它是 二元运算符

加法 +,

减法 -,

乘法 *,

除法 /,

取余 %,

求幂 **.

取余 %

a % b 的结果是 a 整除 b 的 余数

alert( 5 % 2 ); // 1,5 除以 2 的余数

alert( 8 % 3 ); // 2,8 除以 3 的余数

求幂 **.

alert( 2 ** 2 ); // 2² = 4

alert( 4 ** (1/2) ); // 2(1/2 次方)

1 任意一个运算元是字符串,那么另一个运算元也将被转化为字符串(二元 +)。

alert( '1' + 2 ); // "12"

alert(2 + 2 + '1' ); // "41",不是 "221"

alert('1' + 2 + 2); // "122",不是 "14"

二元 + 是唯一一个以这种方式支持字符串的运算符。

其他算术运算符只对数字起作用,并且总是将其运算元转换为数字。

如:

alert( 6 - '2' ); // 4,将 '2' 转换为数字

alert( '6' / '2' ); // 3,将两个运算元都转换为数字

2 一元运算符(+)

 一元运算符加号,或者说,加号 + 应用于单个值,对数字没有任何作用。但是如果运算元不是数字,加号 + 则会将其转化为数字。

// 对数字无效 let x = 1; alert( +x ); // 1

let y = -2; alert( +y ); // -2

// 转化非数字 alert( +true ); // 1 alert( +"" ); // 0

我们经常会有将字符串转化为数字的需求。比如,如果我们正在从 HTML 表单中取值,通常得到的都是字符串。如果我们想对它们求和,该怎么办?

二元运算符加号会把它们合并成字符串:

let apples = "2";

let oranges = "3";

alert( apples + oranges ); // "23",二元运算符加号合并字符串

如果我们想把它们当做数字对待,我们需要转化它们,然后再求和

let apples = "2";

let oranges = "3"; // 在二元运算符加号起作用之前,所有的值都被转化为了数字

alert( +apples + +oranges ); // 5

// 更长的写法 //

alert( Number(apples) + Number(oranges) ); // 5

但要记住一元运算符优先级高于二元运算符

let n = 2; n *= 3 + 5; alert( n ); // 16 (右边部分先被计算,等同于 n *= 8)

3逗号运算符(非重点)

逗号运算符能让我们处理多个语句,使用 , 将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。

举个例子:

let a = (1 + 2, 3 + 4);

alert( a ); // 7(3 + 4 的结果)

这里,第一个语句 1 + 2 运行了,但是它的结果被丢弃了。随后计算 3 + 4,并且该计算结果被返回。

逗号运算符的优先级非常低

请注意逗号运算符的优先级非常低,比 = 还要低,因此上面你的例子中圆括号非常重要。

如果没有圆括号:a = 1 + 2, 3 + 4 会先执行 +,将数值相加得到 a = 3, 7,然后赋值运算符 =执行 a = 3,然后逗号之后的数值 7 不会再执行,它被忽略掉了。相当于 (a = 1 + 2), 3 + 4

null + 1 = 1 //

undefined + 1 = NaN // 

" \t \n" - 2 = -2 // (7)

null 经过数字转换之后会变为 0

undefined 经过数字转换之后会变为 NaN

字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空格字符组成,包括 \t\n 以及它们之间的“常规”空格。因此,类似于空字符串,所以会变为 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值