运算符 - JavaScript 基础

  1. + 运算符
    1. 用来连接字符串
    2. 用来数字转化
  2. 其他算术运算符
  3. 运算符优先级
  4. 赋值运算符
  5. 自增自减同 C 语言
  6. 位操作
  7. 逗号运算符
  8. 练习

+ 运算符

用来连接字符串

只要任意一个运算元是字符串,整个运算结果就是字符串。

1 + "2" => "12"
"2" + 1 => '12"

但是,当多个连接时,会按照运算符的运算顺序来求值。

1 + 2 + "0" => "30"

在这里,运算符是按顺序工作。第一个 + 将前两个数值 number 相加,得到 3,然后才是和字符串的 + 运算,3 被转换为 "3",所以是 "30"

用来数字转化

作为一元运算符时,可用作数字转化。
作用到 number 类型上无任何效果。
作用在其他类型上,等同于 Number(...),可以视为更简洁的 number 显示转换方法

"2" + "3" => "23"
+"2" + +"3" => 5
Number("2") + Number("3") => 5

这里涉及运算符优先级问题。

其他算术运算符

减,乘,除,取余,幂运算:-,*,/,%,** 都只对数字起作用,总是将运算元尝试转换为 number。转换不成功结果为 NaN

12 * "a" => NaN
12 / "a" => NaN
12 - "a" => NaN
12 % "a" => NaN
12 ** "a" => NaN

运算符优先级


所有一元运算符优先级高于任何二元运算符。

赋值运算符

= 是一个运算符,而不是一个有着 “魔法” 作用的语言结构
从优先级表中可以看到它的优先级非常低,只有 3

自增自减同 C 语言

位操作

位操作把运算元视为 32 位整数。

按位与,或,异或 ^,非 ~
左移,右移,无符号右移

逗号运算符

逗号运算符,处理多个语句,返回结果是最后那个语句

let a = (1+2, 9+9)
a => 18

逗号运算符优先级是所有运算符里最低的,是 1

练习

下面这些表达式的结果是什么?

""+ 1 + 0"" - 1 + 0
true + false
6 / "3"
"2" * "3"
4 + 5 + "px"
"$" + 4 + 5
"4" - 2
"4px" - 2
7 / 0
"-9" + 5
"-9" - 5
null + 1
undefined + 1
"\t \n" - 2

答案:

""+ 1 + 0 =>"10""" - 1 + 0 => -1
true + false => 1(不是字符串,自然都转 number)
6 / "3" => 2
"2" * "3" => 6
4 + 5 + "px" => "9px"
"$" + 4 + 5 => "$45"
"4" - 2 => 2
"4px" - 2 => NaN
7 / 0 => infinity
"-9" + 5 => "-9 5"
"-9" - 5 => "-14"
null + 1 => 1
undefined + 1 => NaN
"\t \n" - 2 => -2 (字符串在转为 number 时,去掉两端空白字符,若剩余空字符,则转为 0)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间