美文网首页
3.5.5 指数操作符、3.5.6 加性操作符

3.5.5 指数操作符、3.5.6 加性操作符

作者: Wuthier | 来源:发表于2021-03-31 11:52 被阅读0次
    3.5.5 指数操作符

    ECMAScript 7新增了指数操作符, Math.pow() 现在有了自己的操作符 ** ,结果是一样的:

    console.log(Math.pow(3, 2); // 9
    console.log(3 ** 2); // 9
    
    console.log(Math.pow(16, 0.5); // 4
    console.log(16** 0.5); // 4
    

    指数操作符也有自己的指数赋值操作符 **= ,该操作符执行指数运算和结果的赋值操作:

    let squared = 3;
    squared **= 2;
    console.log(squared); // 9
    
    let sqrt = 16;
    sqrt **= 0.5;
    console.log(sqrt); // 4
    
    3.5.6 加性操作符

    加性操作符,即加法和减法操作符,一般都是编程语言中最简单的操作符。

    不过,在 ECMAScript中,这两个操作符拥有一些特殊的行为。与乘性操作符类似,加性操作符在后台会发生不同数据类型的转换。只不过对这两个操作符来说,转换规则不是那么直观。

    1. 加法操作符( + )

      用于求两个数的和。

      如果两个操作数都是数值,加法操作符执行加法运算并根据如下规则返回结果:

      • 如果有任一操作数是 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" 。

    2. 减法操作符( - )

      减法操作符也有一组规则用于处理 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
      

    学习下一篇文章

    相关文章

      网友评论

          本文标题:3.5.5 指数操作符、3.5.6 加性操作符

          本文链接:https://www.haomeiwen.com/subject/rgzvhltx.html