乘性操作符

​ ECMAScript 定义了 3 个乘性操作符:乘法、除法和取模。这些操作符跟它们在 Java、C 语言及 Perl 中对应的操作符作用一样,但在处理非数值时,它们也会包含一些自动的类型转换。如果乘性操作符有不是数值的操作数,则该操作数会在后台被使用 Number()转型函数转换为数值。这意味着空字符串会被当成 0,而布尔值 true 会被当成 1

  1. 乘法操作符

    ​ 乘法操作符由一个星号(*)表示,可以用于计算两个数值的乘积。其语法类似于 C 语言,比如:

    let result = 34 * 56;

    ​ 不过,乘法操作符在处理特殊值时也有一些特殊的行为。

    • 如果操作数都是数值,则执行常规的乘法运算,即两个正值相乘是正值,两个负值相乘也是正值,正负符号不同的值相乘得到负值。如果 ECMAScript 不能表示乘积,则返回 Infinity 或 -Infinity。
    • 如果有任一操作数是 NaN,则返回 NaN。
    • 如果是 Infinity 乘以 0,则返回 NaN。
    • 如果是 Infinity 乘以非 0 的有限数值,则根据第二个操作数的符号返回 Infinity 或-Infinity。
    • 如果是 Infinity 乘以 Infinity,则返回 Infinity。
    • 如果有不是数值的操作数,则先在后台用 Number()将其转换为数值,然后再应用上述规则。
  2. 除法操作符

    ​ 除法操作符 除法操作符由一个斜杠(/)表示,用于计算第一个操作数除以第二个操作数的商,比如:

    let result = 66 / 11; 

    ​ 跟乘法操作符一样,除法操作符针对特殊值也有一些特殊的行为。

    • 如果操作数都是数值,则执行常规的除法运算,即两个正值相除是正值,两个负值相除也是正值,符号不同的值相除得到负值。如果 ECMAScript 不能表示商,则返回 Infinity 或-Infinity。
    • 如果有任一操作数是 NaN,则返回 NaN。
    • 如果是 Infinity 除以 Infinity,则返回 NaN。
    • 如果是 0 除以 0,则返回 NaN。
    • 如果是非 0 的有限值除以 0,则根据第一个操作数的符号返回 Infinity 或-Infinity。
    • 如果是 Infinity 除以任何数值,则根据第二个操作数的符号返回 Infinity 或-Infinity。
    • 如果有不是数值的操作数,则先在后台用 Number()函数将其转换为数值,然后再应用上述规则。
  3. 取模操作符

    取模(余数)操作符由一个百分比符号(%)表示,比如:

    let result = 26 % 5; // 等于1

    与其他乘性操作符一样,取模操作符对特殊值也有一些特殊的行为。

    • 如果操作数是数值,则执行常规除法运算,返回余数。
    • 如果被除数是无限值,除数是有限值,则返回 NaN。
    • 如果被除数是有限值,除数是 0,则返回 NaN。
    • 如果是 Infinity 除以 Infinity,则返回 NaN。
    • 如果被除数是有限值,除数是无限值,则返回被除数。
    • 如果被除数是 0,除数不是 0,则返回 0。
    • 如果有不是数值的操作数,则先在后台用 Number()函数将其转换为数值,然后再应用上述规则。