+
运算符
用来连接字符串
只要任意一个运算元是字符串,整个运算结果就是字符串。
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)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。