一、什么是表达式???

  是ECMScript中的一个短语,解释器可以通过计算把它转成一个值,最简单的表达式是字面量或者变量名,单一字面量和组合字面量统称为表达式。

二、一元运算符

1、delete 运算符:删除对以前定义的对象属性或方法的引用。例如: 
  var o=new Object; 
  o.name="superman"; 
  alert(o.name); //输出 "superman" 
  delete o.name; 
  alert(o.name); //输出 "undefined" 
  删除了name属性,将其设置为undefined(即创建的未初始化的变量的值)。delete不能删除开发者未定义(即ECMAScript定义)的属性和方法。 
  例如,下面的代码将发生错误:delete o.toString(); 
2、void 运算符: 对任何值都返回undefined。该运算符通常用于避免输出不应该输出的值。 
  例如:在HTML页面中 <a href="javascript:window.open('about:blank')">Click Me</a> 
  点击该链接,网页中的链接消失,显示"[object]" (IE中,火狐中显示"[object Window]",Google中还是该链接)。因为window.open()方法返回了对新打开的窗口的引  用。然后该对象被转换成要显示的字符串。要避免这种结果,可以用 void 运算符调用 window.open() 函数: 
  <a href="javascript:void(window.open('about:blank'))">Click Me</a> 
  这使window.open()调用返回undefined,它不是有效值,不会显示在浏览器窗口中。 
3、前增量/前减量运算符:与C中的用法一样。运算都发生在计算表达式之前。如:++i; --i 。 
4、后增量/后减量运算符:后缀式运算符是在计算过包含它们的表达式后才进行增量或减量运算。如:i++; i-- 。 
5、一元加法和一元减法 
  一元加法本质上对数字无任何影响: var iNum=25; iNum=+iNum; alert(iNum); //输出25 
  一元加法运算符对对字符串进行操作时,它计算字符串的方式与 parseInt() 相似,主要的不同是对以"0x"开头的字符串(表示十六进制数字),一元运算符才能将它转换成十进制的值。因此,用一元加法转换"010",得到的总是10,而"0xB"将被转换成11。 
  var sNum="25"; alert(typeof sNum); //输出 "string" 
  var iNum=+sNum; alert(typeof iNum); //输出 "number" 
  一元减法就是对数值求负,与一元加法运算符相似,一元减法运算符也会把字符串转换成近似的数字,此外还会对该值求负。 
  var sNum = "25"; alert(typeof sNum); //输出 "string" 
  var iNum = -sNum; alert(iNum); //输出"-25" 
  alert(typeof iNum); //输出 "number"

三、位运算符:与二进制有关的一系列运算符,实际操作中貌似不怎么用,就略过了……

  位运算符NOT由否定号(~)表示。 
  位运算符AND由和号(&)表示。 
  位运算符OR由符号(|)表示。 
  位运算符XOR由符号(^)表示。 
  左移运算由两个小于号表示(<<)。 
  有符号右移运算符由两个大于号(>>)表示。 
  无符号右移由三个大于号(>>>)表示。 
三、Boolean运算符 
Boolean运算符有三种,即NOT、AND 和 OR。 
1、逻辑NOT,用感叹号(!)表示。该运算符通常用于控制循环。与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值。逻辑NOT运算符的行为如下: 
  如果运算数是对象,返回false。 
  如果运算数是数字0,返回true。 
  如果运算数是0意外的任何数字,返回false。 
  如果运算数是null,返回true。 
  如果运算数是NaN,返回true。 
  如果运算数是undefined,发生错误。 
  例: var b = true; 
  while(!b){ …… } 
2、逻辑 AND 运算符,用双和号(&&)表示。结果为 true 时只有一种情况:true && true = true; 
  逻辑AND运算的运算数可以是任何类型的,不止是Boolean值。如果某个运算数不是原始的Boolean型值,逻辑AND运算不一定返回Boolean值: 
  如果一个运算数是对象,另一个是Boolean值,返回该对象。 
  如果两个运算数都是对象,返回第二个对象。 
  如果某个运算数是null,返回null。 
  如果某个运算数是NaN,返回NaN。 
  如果某个运算数是undefined,发生错误。 
  如果第一个运算数是false,那么无论第二个运算数的值是什么,结果都不可能为true。 
3、逻辑OR运算符,用双竖线(||)表示。结果为false的情况只有一种:false || false=false; 其他情况均为true。 
  与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值: 
  如果一个运算数是对象,另一个是Boolean值,返回该对象。 
  如果两个运算数都是对象,返回第一个对象。 
  如果某个运算数是null,返回null。 
  如果某个运算数是NaN,返回NaN。 
  如果某个运算数是undefined,发生错误。 
  逻辑OR也是简便运算,对于逻辑OR运算符来说,如果第一个运算数值为true,就不再计算第二个运算数。 
四、乘性运算符 
1、乘法运算符,用星号(*)表示,用于两个数相乘。但在处理特殊值时,ECMAScript中的乘法还有一些特殊行为: 
  如果运算数都是数字,执行常规的乘法运算,如果结果太大或太小,那么生成的结果就是Infinity或-Infinity。 
  如果某个运算数是NaN,结果为NaN。 
  Infinity 乘以0,结果为NaN。 
  Infinity 乘以0以外的任何数字,结果为Infinity或-Infinity,由第二个运算数的符号决定。 
2、除法运算符,用斜线(/)表示,用第二个数除第一个数。对于特殊值,特殊行为如下: 
  如果运算数都是数字,执行常规的触发运算,如果结果太大或太小,那么生成的结果是Infinity或-Infinity。 
  如果某个运算数是NaN,结果为NaN。 
  0除一个非无穷大的数字,结果为NaN。 
  Infinity被0以外的任何数字除,结果为Infinity或-Infinity,由第二个运算数的符号决定。 
3、取模运算符,用百分号(%)表示。如果运算数都是数字,执行常规算术除法运算,返回余数。特殊行为: 
  如果被除数是 Infinity,或者除数是0,结果为NaN。 
  如果除数是无穷大的数,结果为被除数。 
  如果被除数为0,结果为0。 
五、加性运算符 
1、加法运算符(+),特殊行为: 
  某个运算数是NaN,结果为NaN。 
  Infinity 加-Infinity,结果为NaN。 
  如果某个运算数是字符串,那么采用下列规则: 
  如果两个运算数都是字符串,把第二个字符串连接到第一个字符串上。 
  如果只有一个运算数是字符串,把另一个运算数转换成字符串,结果是两个字符串连接成的字符串。 
2、减法运算符(-),如果两个运算数都是数字,将执行算术减法。特殊规则: 
  如果运算数是NaN,结果为NaN。 
  某个运算数不是数字,结果为NaN。 
六、关系运算符 
  关系运算符小于、大于、小于等于和大于等于执行的是两个数的比较运算,比较方式与算术比较运算相同。每个关系运算符都返回一个Boolean值。 
对于字符串,第一个字符串中每个字符的代码都会与第二个字符串中对应位置上的字符的代码进行数值比较。 
1、大写字母的代码都小于小写字母的代码,所以要得到按照真正的字母顺序比较结果,必须把两个运算数转换成相同的大小写形式,再进行比较。 
2、在比较两个字符串形式的数字时,比较的是它们的字符代码。 
3、比较一个字符串和数字,ECMAScript都会把字符串转换为数字,然后按照数字顺序比较它们。如果字符串不能转换成数字,那么返回NaN,任何包含NaN的关系运算都要返回false。因此,这样会返回false。 
七、等性运算符 
1、等号(==) 和非等号(!=),为确定两个运算数是否相等,这两个运算符都会进行类型转换。执行类型转换的基本规则如下: 
  如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。False转换成0,true转换成1。 
  如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。 
  如果一个运算数是对象,另一个是字符串,在检查等性之前,要尝试把对象转换成字符串(调用toString()方法)。 
  如果一个运算数是对象,另一个是数字,在检查等性之前,要尝试把对象转换成数字。 
  在进行比较时,该运算符还遵守下列规则: 
  值null和undefined相等。 
  在检查相等性时,不能把null和undefined转换成其他值。 
  如果某个运算数是NaN,等号将返回false,非等号将返回true。即使两个运算数都是NaN,等号仍然返回false,因为根据规则,NaN不等于NaN。 
  如果两个运算数都是对象,那么比较的是他们的引用值。如果两个运算数指向同一个对象,那么等号返回true,否则两个运算数不等。

  
2、全等号和非全等号 
  等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是他们在检查相等性前,不执行类型转换。 
全等号由三个等号(===)表示,只有在无需类型转换运算数就相等的情况下,才返回true。 
var sNum="55"; var iNum=55; alert(sNum==iNum); //输出 "true" 
alert(sNum===iNum); //输出 "false" 
非全等号由两个感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回true。 
var sNum="55"; var iNum=55; alert(sNum != iNum); //输出 "false" 
alert(sNum !== iNum); //输出 "true" 
八、其他运算符 
  1、条件运算符,即三元运算符 : variable = boolean_expression ? true_value : false_value; 
  2、赋值运算符(=) 复合赋值运算符:+=、-=、*=、/=、%=、<<=、>>=、>>>= 
  3、逗号运算符 用逗号运算符可以在一条语句中执行多个运算。 如: var iNum1=1,iNum2=2;

JavaScript的运算符的更多相关文章

  1. JavaScript instanceof 运算符深入剖析

    简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...

  2. javascript算术运算符详解

    算术运算符 +.-.*./.%.++.-- ++.--分为前缀形式和后缀形式 前缀形式先加减1在执行 后缀形式先执行再加减1 注意 +号用来连接两个字符串 只要+连接的操作数中有一个是字符串型,JS就 ...

  3. JavaScript instanceof 运算符深入剖析【转载】

    http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/   instanceof 运算符简介 在 JavaScript ...

  4. JavaScript instanceof 运算符

    instanceof运算符简介 在 JavaScript 中 判断一个变量的类型常常会用 typeof 运算符 判断一个实例是否属于某种类型会使用instanceof 与 typeof 方法不同的是, ...

  5. (4)javascript的运算符以及运算符的优先级

                                    运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为 ...

  6. javaScript常用运算符和操作符总结

    javaScript常用运算符和操作符总结 类别 操作符 算术操作符 +. –. *. /. %(取模) 字符串操作符 + 字符串连接   +=字符串连接复合 布尔操作符 !. &&. ...

  7. javascript(六)运算符

    运算符概述 JavaScript中的运算符用于算术表达式. 比较表达式. 逻辑表达式. 赋值表达式等.需要注意的是, 大多数运算符都是由标点符号表示的, 比如 "+" 和" ...

  8. JavaScript 算术运算符

    处理数值的典型情景是数值计算. ㈠JavaScript 算术运算符 算术运算符对数值(文字或变量)执行算术运算. ㈡算术运算符 典型的算术运算会操作两个数值. ⑴这两个数可以是字面量: var x = ...

  9. JavaScript多元运算符

    JavaScript多元运算符   JavaScript多元运算符 **实例:**` function test(9){ var a=4,b=11; return p > 1 ? p<b ...

  10. javascript中运算符的优先级

    运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低 ...

随机推荐

  1. jsp: jstl标签库

    jstl标签库,通过maven配置: <!-- jstl标签的支持 --> <dependency> <groupId>javax.servlet</grou ...

  2. spring boot: 线程池ThreadPoolTaskExecutor, 多线程

    由于项目里需要用到线程池来提高处理速度,记录一下spring的taskExecutor执行器来实现线程池. ThreadPoolTaskExecutor的配置在网上找了很多解释没找到,看了下Threa ...

  3. Enum Binding ItemsSource In WPF

    Enum Binding ItemsSource In WPF   在WPF中枚举绑定到ItemsSource. 一.通过ObjectDataProvider 获取Enum数据源 首先我们定义一个En ...

  4. 删除rime输入法

    mac: 首先将输入法从偏好设置-键盘-输入源中去除,添加系统的输入法. 然后执行命令: $ killall Squirrel $ sudo rm -Rf "/Library/Input M ...

  5. hzau 1206 MathematicalGame

    1206: MathematicalGame Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 124  Solved: 15[Submit][Statu ...

  6. 使用for循环添加点击事件时,获取i值的方法

    比如页面上有一个ul,数个li,现在给li添加点击事件. var li = document.getElementsByTagName("li"); for(var i = 0; ...

  7. LeetCode OJ:Binary Tree Paths(二叉树路径)

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...

  8. 前端调错看ajax请求操作

    ---------------------------------------------------------------------------------------------------- ...

  9. New Year and Counting Cards

    Your friend has n cards. You know that each card has a lowercase English letter on one side and a di ...

  10. [转]JavaScript之引用类型

    Object类型 Object类型是JavaScript中使用最多的一种类型.虽然Object的实例不具备多少功能,但对于在应用程序中存储和传输数据而言,它确实是非常理想的选择. 创建Object实例 ...