摘要:浮点数运算余数运算符还可以用于浮点数的运算。这些语言中的幂运算符有着比其他的单目运算符如一元或一元更高的优先级。但是作为例外,在中,运算符被设计为比单目运算符优先级更低。
一、算术运算符
运算符 | 描述 | 例子 | x 运算结果 | y 运算结果 |
---|---|---|---|---|
+ | 加法 | x=y+2 | 7 | 5 |
- | 减法 | x=y-2 | 3 | 5 |
* | 乘法 | x=y*2 | 10 | 5 |
/ | 除法 | x=y/2 | 2.5 | 5 |
% | 取模(余数) | x=y%2 | 1 | 5 |
++ | 自增 | x=++y | 6 | 6 |
++ | 自增 | x=y++ | 5 | 6 |
-- | 自减 | x=--y | 4 | 4 |
-- | 自减 | x=y-- | 5 | 4 |
(1)数值求和
(2)字符串拼接
2.2 示例(1)布尔值会自动转换为 数值,false 转换为 0,true 转换为 1,然后再相加。
2.3 重载加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)。
由于加法运算符存在重载,可能执行两种运算,使用的时候必须很小心。
上面代码中,由于从左到右的运算次序,字符串的位置不同会导致不同的结果。
除了加法运算符,其他算术运算符(比如减法、除法和乘法)都不会发生重载。他们的规则是 所有运算子一律转为数值,再进行相应的数学运算。
上面代码中,减法、除法和乘法运算符,都是将字符串自动转为数值,然后再运算。
2.4 对象的加法(1)如果运算子是对象,必须先转成原始类型的值,然后再相加。
(2)转换规则
首先,调用对象的 valueOf() 方法,返回对象自身,再调用对象的 toString() 方法,将其转为字符串(原始类型)。
2.5 特殊行为(1)某个运算数是 NaN,那么结果为 NaN。
(2)-Infinity 加 -Infinity,结果为 -Infinity。
(3)Infinity 加 -Infinity,结果为 NaN。
(4)+0 加 +0,结果为 +0。
(5)-0 加 +0,结果为 +0。
(6)-0 加 -0,结果为 -0。
(7)任何数据类型 + 字符串 = 字符串
(8)若数值求和,undefined 转换为 NaN,null 转换为 0
(9)若字符串拼接,undefined 转换为 "undefined",null 转换为 "null",false 转换为 "false",true 转换为 "true"
三、减法 (-) 3.1 特殊行为(1)某个运算数是 NaN,那么结果为 NaN。
(2)Infinity 减 Infinity,结果为 NaN。
(3)-Infinity 减 -Infinity,结果为 NaN。
(4)Infinity 减 -Infinity,结果为 Infinity。
(5)-Infinity 减 Infinity,结果为 -Infinity。
(6)+0 减 +0,结果为 +0。
(7)-0 减 -0,结果为 -0。
(8)+0 减 -0,结果为 +0。
(9)某个运算符不是数字,那么结果为 NaN。
(10)undefined 转换为 NaN,null 转换为 0
四、乘法 (*) 4.1 特殊行为(1)如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
(2)如果某个运算数是 NaN,结果为 NaN。
(3)Infinity 乘以 0,结果为 NaN。
(4)Infinity 乘以 0 以外的任何数字,结果为 Infinity 或 -Infinity。
(5)Infinity 乘以 Infinity,结果为 Infinity。
五、除法 (/) 5.1 特殊行为(1)如果结果太大或太小,那么生成的结果是 Infinity 或 -Infinity。
(2)如果某个运算数是 NaN,结果为 NaN。
(3)Infinity 被 Infinity 除,结果为 NaN。
(4)Infinity 被任何数字除,结果为 Infinity。
(5)0 除一个任何非无穷大的数字,结果为 NaN。
(6)Infinity 被 0 以外的任何数字除,结果为 Infinity 或 -Infinity。
六、求余 (%)求余运算符返回第一个操作数对第二个操作数的模,即 var1 对 var2 取模,其中 var1 和 var2 是变量。取模功能就是 var1 除以 var2 的 整型余数。6.1 示例
求余运算符(%)返回前一个运算子 被 后一个运算子 除,所得的 余数。
6.2 注意运算结果的正负号由 第一个运算子 的 正负号 决定。
6.3 绝对值函数为了得到 负数 的正确余数值,可以先使用绝对值函数。
6.4 浮点数运算余数运算符还可以用于浮点数的运算。但是,由于浮点数 不是精确的值,无法得到完全准确的结果。
6.5 特殊行为(1)如果被除数是 Infinity,或除数是 0,结果为 NaN。
(2)Infinity 被 Infinity 除,结果为 NaN。
(3)如果除数是无穷大的数,结果为被除数。
(4)如果被除数为 0,结果为 0。
七、幂 (**)幂运算符返回第一个操作数做底数,第二个操作数做指数的乘方。即, var1var2 ,其中 var1 和 var2 是其两个操作数。
7.1 语法运算符: var1 ** var27.2 注解
(1)包括 PHP 或 Python 等的大多数语言中,都包含幂运算符(一般来说符号是 ^ 或者 **)。这些语言中的幂运算符有着比其他的单目运算符(如一元 + 或一元 - )更高的优先级。但是作为例外,在 Bash 中,** 运算符被设计为比单目运算符优先级更低。
(2)在最新的 JavaScript(ES2016) 中,禁止使用带歧义的幂运算表达式。比如,底数前不能紧跟一元运算符(+/-/~/!/delete/void/typeof)
7.3 示例(1)如果要反转求幂表达式结果的符号,你可以采用这样的方式:
(2)强制求幂表达式的基数为负数:
八、自增 (++)自增运算符为其操作数增加1,返回一个数值。8.1 后置和前置
(1)如果后置(postfix)使用,即运算符位于操作数的后面(如 x++),那么将会在自增前返回数值。
(2)如果前置(prefix)使用,即运算符位于操作数的前面(如 ++x),那么将会在自增后返回数值。
8.2 示例 8.3 练习 九、自减 (--)自减运算符将其操作数减去1,并返回一个数值。9.1 后置和前置
(1)如果后置使用(如 x--),则在自减前返回数值。
(2)如果前置使用(如 --x),则在自减后返回数值。
9.2 示例阅读更多
参考文章 JavaScript 标准参考教程(alpha)运算符
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93849.html
摘要:除法大前端数字类型与字符串除法运算,同样会先将字符串转为数字类型再做算术运算,同样与布尔类型做算术运算,也是先把布尔类型转换为数字类型再做算术运算,但是遇到字符串里包含有英文或者中文将会得到结果。 算数运算符 包含+、-、*、/、%,下面通过代码示例来给大家进行演示一下;加法: var num=100; var str1=大前端; var str2=300; var boo=true;...
摘要:类型转换法则这里讨论里对不同类型进行运算的时候,是如何做类型转换的一般是隐式转换。转化过程先查看对象的方法是否返回基本类型。结果转为返回字符串。引用类型需先转换为基本类型。后记不同类型之间的类型转换,确实是让人挠头的语言。 Javascript为什么会有类型转换 Javascirpt世界里,不推荐大量的使用try...catch...,我想大概原因: JS里任何类型之间的算数运算,逻...
摘要:代码示例等号检查,类型转换后返回全等检查,由于时类型,时类型,类型不同,返回关系运算符关系运算符执行的是比较运算,通常用于判断两个变量哪个大哪个小关系运算符都返回一个布尔值。逻辑或运输符用双竖线表示。 1.运算符 JavaScript中常见的运算符包含:赋值运算符、算数运算符、等性运算符、关系运算符、条件运算符、布尔运算符、逻辑运算符…… 1.赋值运算符 = 赋值运算符=,用于给某个变...
摘要:运算符运算符一共分为六种算数运算符比较运算符逻辑运算符赋值运算符字符串联接运算符条件运算符运算符的概念提供的一组用于操作数据值的运算符操作符。这些运算符可以按照作用的不同或者操作变量数量的不同进行分类。 运算符 ——运算符一共分为六种;1.算数运算符2.比较运算符3.逻辑运算符4.赋值运算符5.字符串联接运算符6.条件运算符——运算符的概念;JavaScript提供的一组用于操作数据值...
摘要:赋值运算符赋值扩展运算符就是赋值运算符和算数之间配合使用,也是一种简写形式等价写法赋值扩展运算符性能要比赋值运算符更高五。 运算符一。算数运算符1.算数运算符; 运算中一个或二个是字符串,js会自动转换为数字,来计算,最后结果是为NaN 任何一个和NaN计算后都是结果都是NaN 布尔值false和true都会转换为0和1来计算 var num = 100; var str1 = 爱新觉...
阅读 1315·2023-04-25 18:34
阅读 3406·2021-11-19 09:40
阅读 2805·2021-11-17 09:33
阅读 2919·2021-11-12 10:36
阅读 2802·2021-09-26 09:55
阅读 2634·2021-08-05 10:03
阅读 2494·2019-08-30 15:54
阅读 2846·2019-08-30 15:54