5.1.2 优先级和结合性
优先级:指运算符的运算顺序,通俗的说就是先计算哪一部分。
结合性:同一优先级运算符的计算顺序,通俗的说就是从哪个方向算起,是左到右还是右到左。
优先级 | 运算符 | 描述 | 结合性 |
由高到低排序 | () | 括号 | 从左到右 |
++ -- | 递增或递减 | 从右到左 | |
! | 逻辑非 | 从右到左 | |
* / % | 乘法、除法、取模 | 从左到右 | |
+ - | 加法、减法 | 从左到右 | |
+ | 拼接 | 从左到右 | |
< <= | 小于、小于等于 | 从左到右 | |
> >= | 大于、大于等于 | 从左到右 | |
= = != | 等于、不等于 | 从左到右 | |
= = = != = | 等同(类型相同)、不等同 | 从左到右 | |
& | 按位与 | 从左到右 | |
| | 按位或 | ||
^ | 按位异或 | ||
~ | 按位非 | ||
<< | 按位左移 | ||
>> | 按位右移 | ||
>>> | 按位右移,左边以0填充 | ||
&& | 逻辑与 | 从左到右 | |
| | | 逻辑或 | 从左到右 | |
?: | 三元条件表达式 | 从右到左 | |
= += -= *= %= <<= >>= | 赋值 | 从右到左 |
1 var x = 5+4*12/4 //4*12 /4 +5
5.2 运算符类型
5.2.1 算术运算符: + - * /
递增运算和递减运算,递增运算是将其操作数加1,递减运算是将其操作数减1。运算符有:前缀形式(++X 或 - -X),后缀形式(X++ 或 - -X)。
前缀形式是先运算再赋值。如:y=0 x=5 y=++x y=6 因为是先运算再赋值,先将x+1后再赋值给y,所以y=6 x=6
后缀形式是先赋值在运算。如:y=0 x=5 y=x++ y=5 因为是先赋值再运算,先把x的值赋给y,所以y=5 x=6
5.2.2 相等:当两个数的数值相同时它们相等。字符串和数字进行比较时,如果数字和字符串有相同的字符串则它们相等,如:"500"和500相等。NaN(非数字)和任何操作数都不相等,包括NaN本身。正零和负零是相等的。Null和undefined是相等的。
5.3 逻辑运算符
&&逻辑与:两个条件都满足时才为true。如果&&左侧的表达式的计算结果为零,null或空字符"",则表达式的值为false,如果运算符左侧的表达式的计算结果为true(非零),就计算右侧的表达式,如果该表达式也为true,则整个表达式的结果就为true。如果运算符左侧为true,右侧为false,那么整个表达式的值就为false。
“this”&&“that” 返回的值是that,因为&&需要两个都为真,当两个值都为真时就返回最后的一个值。
| |逻辑或:只需要一个条件为true,就为true。如果左侧表达式为true,侧不需要再做其它操作,整个表达式就为真;如果左侧为false,就计算右侧,右侧为true整个表达式就为true,右侧为false整个表达式就为false。
“this”&&“that” 返回的值是this,当this为真时就满足了一个条件为真,整个表达式就为真,所以返回的值是this。
!逻辑非:如果表达式为false则返回true,如果表达式为true则返回false。
5.4 条件运算符
格式:条件表达式?表达式:表达式
示例:x ? y : z 如果x为真,表达式的值为y,否则表达式的值变为z
big = (x > y) ? x : y 如果x大于y,则将x赋给变量big,否则将y赋给变量big
5.5 位运算符
运算符 | 函数 | 示例 | 运算规则 |
& | 位与 | x & y | 如果两个相应位都为1则该位返回1 |
| | 位或 | x | y | 如果两个相应位有一个为1则返回1 |
^ | 位异或 | x ^ y | 如果两个相应位只有一个为1则返回1 |
~ | 位非 | ~x | 将运算符按位取反,将1变0,0变1 |
<< | 左移 | x << y | 将二进制数x向左移y位,右边补0 |
>> | 右移 | x >> y | 将二进制数x向右移y位,移出位丢弃 |
>>> | 右移补零 | x >>> b | 将二进制数x向右移y位,移出位丢弃,左边以0填充 |
101
& 100
-----------
100
5.6 数据类型转换
String() 转换为字符串类型
Number() 转换为数字类型
Boolean() 转换为布尔类型
1 var result = Number(num1)+Number(num2) //将num1和num2转为为数字类型后相加后的值赋给result
parseInt:将字符串转换为整数。从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseInt(“150 hi”)返回的值是:150,parseInt("hi")返回的值是:NaN。
parseFloat:将字符串转换为浮点数。 从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseFloat("15.5 hi") 返回的值是:15.5,parseFloat("hi 15.5")返回的值是:NaN。
eval:将字符串作为javascript表达式进行计算,并返回执行结果,如果没有结果则返回undefined。
1 var str="5+4";
2 var num1=eval(str); //eval()函数将"5+4"作为javascript指令计算字符串表达式。变量num1的值