JavaScript 运算符

本文不讨论1+1为何等于2,也不介绍JavaScript中加减乘除中大家都知道的事。要说,咱就说点特别的。就着Zakas大叔给咱出的题http://www.nczonline.net/blog/2010/02/18/my-javascript-quiz-answers/,首先咱来看一下,运算符的优先级。

JavaScript 运算符优先级

JavaScript 运算符优先级,优先级由高到低,相同优先级按照从左到右执行
运算符 描述
. [] () 属性访问、数组下标、函数调用以及表达式分组
++ — – ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模(乘除优先于加减是肯定的了)
+ – + 加法、减法、字符串连接
<< >> >>> 移位(这个用到的时候太少太少)
< <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、全等于、非全等号
& 按位与(这个曾经用过)
^ 按位异或(大学时用过,不过不是js)
| 按位或
&& 逻辑与(And)
|| 逻辑或(Or)
?: 三目运算符,可翻译为,如果则,否则
= oP= 赋值、运算赋值(很无奈,第二个我没用过)
, 逗号运算符,可在一条语句中,执行多个运算,最常用于变量声明中

当数字遇到字符串

在JavaScript中,当数字遇上字符串,到底会发生什么呢?

使用加性运算符(+)时,如果某个运算数是字符串,采用下列规则:

  1. 如果两个运算数都是字符串,那么加性运算符(+)的意义是连接符,将第二个字符串连接到第一个字符串上
  2. 如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串

当使用关系运算符时(<、>、<=、>=),采用下列规则:

  1. 无论何时比较一个数字和一个字符串,ECMAScript 都会把字符串转换成数字,然后按照数字顺序比较它们
  2. 当对一个数字和一个字符串使用关系运算符时,如果字符串不能被转换为有意义的数字,则被转换为NaN ,因任何包含NaN的关系运算都要返回false,其结果返回false

简单试题分析

JavaScript 运算符》上有7条评论

  1. guihailiuli

    你好,问一下你的代码高亮的插件用的什么?我找了好几个,但是觉得效果都不好,偶然看到你的这个,感觉挺不错的,求介绍?

发表评论

电子邮件地址不会被公开。 必填项已用*标注