⭐ 作者简介:码上言
⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程
⭐专栏内容:个人博客系统
⭐我的文档网站:http://xyhwh-nav.cn/
⭐微信公众号:码上言
文章目录
- 操作符
- 1. 乘性操作符
- 1.1 乘法操作符
- 1.2. 除法操作符
- 1.3. 取模操作符
- 2. 指数操作符
- 3. 加性操作符
- 3.1. 加法操作符
- 3.2 减法操作符
操作符
ECMA-262描述了一组可用于操作数据值的操作符,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。
1. 乘性操作符
ECMAScript定义了3个乘性操作符:乘法、除法和取模。在处理非数值时,它们也会包含一些自动的类型转换。如果乘性操作符有不是数值的操作数,则该操作数会在后台被使用Number()转型函数转换为数值。
1.1 乘法操作符
乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积。
let result = 34 * 56;
乘法操作符在处理特殊值时也有一些特殊的行为。
- 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果ECMAScript不能表示乘积,则返回Infinity或-Infinity。
- 如果有任一操作数是NaN,则返回NaN。
- 如果是Infinity乘以0,则返回NaN。
- 如果是Infinity乘以非0的有限数值,则根据第二个操作数的符号返回Infinity或-Infinity。
- 如果是Infinity乘以Infinity,则返回Infinity。
- 如果有不是数值的操作数,则先在后台用Number()将其转换为数值,然后再应用上述规则。
1.2. 除法操作符
除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商。
let result = 66 / 11;
除法操作符针对特殊值也有一些特殊的行为。
- 如果操作数都是数值,则执行常规的除法运算,即两个正值相除是正值,两个负值相除也是正值,符号不同的值相除得到负值。如果ECMAScript不能表示商,则返回Infinity或-Infinity。
- 如果有任一操作数是NaN,则返回NaN。
- 如果是Infinity除以Infinity,则返回NaN。
- 如果是0除以0,则返回NaN。
- 如果是非0的有限值除以0,则根据第一个操作数的符号返回Infinity或-Infinity。
- 如果是Infinity除以任何数值,则根据第二个操作数的符号返回Infinity或-Infinity。
- 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。
1.3. 取模操作符
取模(余数)操作符由一个百分比符号(%)表示。
let result = 26 % 5; // 等于1
取模操作符对特殊值也有一些特殊的行为。
- 如果操作数是数值,则执行常规除法运算,返回余数。
- 如果被除数是无限值,除数是有限值,则返回NaN
- 如果被除数是有限值,除数是0,则返回NaN。
- 如果是Infinity除以Infinity,则返回NaN。
- 如果被除数是有限值,除数是无限值,则返回被除数。
- 如果被除数是0,除数不是0,则返回0。
- 如果有不是数值的操作数,则先在后台用Number()函数将其转换为数值,然后再应用上述规则。
2. 指数操作符
ECMAScript 7新增了指数操作符,Math.pow()现在有了自己的操作符**,结果是一样的。
console.log(Math.pow(3, 2); // 9
console.log(3 ** 2); // 9console.log(Math.pow(16, 0.5); // 4
console.log(16** 0.5); // 4
指数操作符也有自己的指数赋值操作符**=,该操作符执行指数运算和结果的赋值操作
let squared = 3;
squared **= 2;
console.log(squared); // 9let sqrt = 16;
sqrt **= 0.5;
console.log(sqrt); // 4
3. 加性操作符
加性操作符,即加法和减法操作符。不过,在ECMAScript中,这两个操作符拥有一些特殊的行为。与乘性操作符类似,加性操作符在后台会发生不同数据类型的转换。
3.1. 加法操作符
加法操作符(+)用于求两个数的和。
let result = 1 + 2;
如果两个操作数都是数值,加法操作符执行加法运算并根据如下规则返回结果:
- 如果有任一操作数是NaN,则返回NaN;
- 如果是Infinity加Infinity,则返回Infinity;
- 如果是-Infinity加-Infinity,则返回-Infinity;
- 如果是Infinity加-Infinity,则返回NaN;
- 如果是+0加+0,则返回+0;
- 如果是-0加+0,则返回+0;
- 如果是-0加-0,则返回-0。
如果有一个操作数是字符串,则要应用如下规则:
- 如果两个操作数都是字符串,则将第二个字符串拼接到第一个字符串后面;
- 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,再将两个字符串拼接在一起。
如果有任一操作数是对象、数值或布尔值,则调用它们的toString()方法以获取字符串,然后再应用前面的关于字符串的规则。对于undefined和null,则调用String()函数,分别获取"undefined"和"null"。
3.2 减法操作符
减法操作符(-)。
let result = 2 - 1;
减法操作符也有一组规则用于处理ECMAScript中不同类型之间的转换。
-
如果两个操作数都是数值,则执行数学减法运算并返回结果。
-
如果有任一操作数是NaN,则返回NaN。
-
如果是Infinity减Infinity,则返回NaN。
-
如果是-Infinity减-Infinity,则返回NaN。
-
如果是Infinity减-Infinity,则返回Infinity。
-
如果是-Infinity减Infinity,则返回-Infinity。
-
如果是+0减+0,则返回+0。
-
如果是+0减-0,则返回-0。
-
如果是-0减-0,则返回+0。
-
如果有任一操作数是字符串、布尔值、null或undefined,则先在后台使用Number()将其转换为数值,然后再根据前面的规则执行数学运算。如果转换结果是NaN,则减法计算的结果是NaN。
-
如果有任一操作数是对象,则调用其valueOf()方法取得表示它的数值。如果该值是NaN,则减法计算的结果是NaN。如果对象没有valueOf()方法,则调用其toString()方法,然后再将得到的字符串转换为数值。
let result1 = 5 - true; // true被转换为1,所以结果是4 let result2 = NaN - 1; // NaN let result3 = 5 - 3; // 2 let result4 = 5 - ""; // ""被转换为0,所以结果是5 let result5 = 5 - "2"; // "2"被转换为2,所以结果是3 let result6 = 5 - null; // null被转换为0,所以结果是5