JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)_javascript技巧

2.9.5、加性运算符
  加性运算符(即加号和减号)通常是最简单的运算符,不过在ECMAScript中,每个加性运算符都有大量的特殊行为。

  1、加法运算符:

复制代码 代码如下:

var iResult=1+2;
console.log(iResult);//outputs 3

特殊性:

某个运算数是NaN,结果为NaN
Infinity加Infinity,结果为Infinity
-Infinity加-Infinity,结果为-Infinity
Infinity加-Infinity,结果为NaN
如果两个运算数都是字符串,把第二个字符串连接到第一个字符串上
如果只有一个运算数是字符串,把另一个运算数转换为字符串,结果是两个字符串连接成的字符串
  示例:

复制代码 代码如下:

var iResult2=NaN+1;
console.log(iResult2);//NaN

var iResult3=Infinity+Infinity;
console.log(iResult3);//Infinity

var iResult4=-Infinity-Infinity;
console.log(iResult4);//-Infinity

var iResult5="abc"+"bcd";
console.log(iResult5);//abcbcd

var iResult6=5+"5";
console.log(iResult6);//55

2、减法运算符:

复制代码 代码如下:

var iResult=2-1;
console.log(iResult);//1

特殊性:

某个运算数是NaN,结果为NaN
Infinity减Infinity,结果为NaN
-Infinity减-Infinity,结果为NaN
Infinity减-Infinity,结果为Infinity
-Infinity减-Infinity,结果为-Infinity
如果两个运算数都是字符串,结果为NaN
如果只有一个运算数是字符串,把字符串转换为数字再进行运算
  示例:

复制代码 代码如下:

var iResult2=NaN-1;
console.log(iResult2);//NaN

var iResult3=Infinity-Infinity;
console.log(iResult3);//NaN

var iResult4=-Infinity-(-Infinity);
console.log(iResult4);//NaN

var iResult5=-Infinity-Infinity;
console.log(iResult5);//-Infinity

var iResult6=Infinity-(-Infinity);
console.log(iResult6);//Infinity

var iResult7="abc"-"a";
console.log(iResult7);//NaN

var iResult8="5"-5;
console.log(iResult8);//0

var iResult9="a"-5;
console.log(iResult9);//NaN

2.9.6、关系运算符
  关系运算符<、>、<=、>=执行的是两个数字的比较运算,返回的是一个Boolean值。如果两个操作数都是字符串,则逐一比较两个字符串的ASC码,如果只有一方是字符串,则把字符串转换为数字后比较,示例如下:

复制代码 代码如下:

var bResult=2<1;
console.log(bResult);//false

var bResult="B"<"a";
console.log(bResult);//true

var bResult="b"<"a";
console.log(bResult);//false

var bResult="13"<"2";
console.log(bResult);//true

var bResult=13<"2";
console.log(bResult);//false

var bResult=-1<"a";
console.log(bResult);//false

第17行的代码中,"a"被转换为数字时返回的是NaN,任何包含NaN的关系运算都要返回false。

2.9.7、等性运算符
  1、等号和非等号

  在ECMAScript中,等号(==)及非等号(!=)都返回Boolean值。为确定两个运算数是否相等,这两个运算数都会进行类型转换,转换规则如下:

如果一个运算数是Boolean值,在检查相等性之前,把它转换成数字值。false转换成0,true转换成1。
如果一个运算数是字符串,另一个运算数是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
  在进行比较时,运算符还遵循还列规则:

值null和undefined相等
在检查相等性时,不能把null和undefined转换成其他值。
如果某个运算数是NaN,等号将返回false,非等号将返回true。重要提示:即使两个运算数都是NaN,等号仍返回false,因为根据规则,NaN不等于NaN。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数把向同一个对象,那么等号返回true,否则两个运算数不等。
  示例:

复制代码 代码如下:

console.log(null==undefined);//true
console.log("NaN"==NaN);//false
console.log(5==NaN);//false
console.log(NaN==NaN);//false
console.log(NaN!=NaN);//true
console.log(false==0);//true
console.log(true==1);//true
console.log(true==2);//false
console.log(undefined==0);//false
console.log(null==0);//false
console.log("5"==5);//true

2、全等号和非全等号

  等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。全等号由三个等号(===)表示,非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数就相等的情况下,才返回true。例如:

复制代码 代码如下:

console.log("55"==55);//true
console.log("55"===55);//false
console.log("55"!=55);//false
console.log("55"!==55);//true

2.9.8、条件运算符
  条件运算符跟其他语言中的相同:varialbe=boolean_expression?true_value:false_value;
  示例:

复制代码 代码如下:

function Max(iNum1,iNum2){
return iNum1>=iNum2?iNum1:iNum2;
}
console.log(Max(1,3));//3
console.log(Max(3,1));//3

2.9.9、赋值运算符
  简单的赋值运算符由等号(=)实现,只是把等号右边的值赋予等号左边的变量,例如:

var iNum=10;
  复合赋值运算是由乘性运算符、加性运算符或位移运算符加等号(=)实现的。这些赋值运算符是下列这些常见情况的缩写形式:

复制代码 代码如下:

var iNum=10;
iNum=iNum+10;

//等同于
var iNum=10;
iNum+=10;

每种主要的算术运算及其他几个运算都有复合赋值运算符:

乘法/赋值(*=)
除法/赋值(/=)
取模/赋值(%=)
加法/赋值(+=)
减法/赋值(-=)
左移/赋值(<<=)
有符号右移/赋值(>>=)
无符号右移/赋值(>>>=)
2.9.10、逗号运算符
  用逗号运算符可以在一条语句中执行多个运算。例如:

var iNum=1,iNum2=2,iNum3=3;
  逗号运算符最常用于变量声明中。

时间: 2024-11-08 19:57:43

JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)_javascript技巧的相关文章

JavaScript高级程序设计 读书笔记之十 本地对象Date日期_javascript技巧

创建 var d=new Date(); 要注意的是在JavaScript中月份的值是从0到11(0表示1月). 设置日期和时间值 设置日期和时间值有两种方法: 1.只声明距离1970年1月1日凌晨12点的毫秒数 a.直接用距离1970年1月1日凌晨12点的毫秒数 var d=new Date(0); b.parse方法: parse方法接受字符串为参数,把该字符串转换成日期值,返回的是毫秒数. 例如为2012年2月27日创建Date对象: var d=new Date(Date.parse("

JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)_javascript技巧

2.9 运算符 2.9.1.一元运算符 一元运算符只有一个参数,即要操作的对象或值. 1.delete:删除对以前定义的对象属性或方法的引用,但此运算符不能删除开发者未定义的属性和方法.示例: 复制代码 代码如下: var o=new Object; o.name="Nicholas"; o.show=function(){ return "test"; }; console.log(o.name); //outpus Nicholas console.log(o.

JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句_javascript技巧

if语句 语法: 复制代码 代码如下: if(condition){ statement1; } else{ statement2; } 迭代语句 1.do-while语句 语法: 复制代码 代码如下: do{ statement }while(expression); 2.while语句 语法: 复制代码 代码如下: while(expression){ statement } 3.for语句 语法: 复制代码 代码如下: for(initialization;expression;post-

JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换_javascript技巧

2.7 类型转换 1.转换成字符串 所有对象都有toString()方法可以转换成字符串,要注意的是Number类型的toString()方法,它有两种模式,即默认模式和基模式,采用默认模式toString()方法只是用相应的字符串输出对应的10进制数字值,用基模式可以用不同的基输出数字.示例: 复制代码 代码如下: var iNum1=10; var iNum2=10.0; var iNum3=10; alert(iNum1.toString()); //outpus "10" al

JavaScript高级程序设计 阅读笔记(二十) js错误处理_javascript技巧

一.错误分类 1.语法错误:也称解析错误,发生在传统语言的编译时,在JavaScript中发生在解释时.这些错误是由代码中的意外字符直接引起的,然后就不能直接编译/解释.发生语法错误时,就不能继续执行代码.在JavaScript中,只有在同一个线程中的代码会受语法错误的影响.在其他线程中的代码和其他外部引用的文件中的代码,如果不依赖于包含错误的代码,则可以继续执行. 2.运行时错误:也称为异常(exception,在编译期/解释器后).此时,问题并不出在代码的语法上,而是,尝试完成的一个操作,在

JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现_javascript技巧

继承 继承是面向对象语言的必备特征,即一个类能够重用另一个类的方法和属性.在JavaScript中继承方式的实现方式主要有以下五种:对象冒充.call().apply().原型链.混合方式. 下面分别介绍. 对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值.因为构造函数只是一个函数,所以可以使ClassA的构造函数成为ClassB的方法,然后调用它.ClassB就会收到ClassA的构造函数中定义的属性和方法. 示例: 复制代码 代码如下: function ClassA(sCol

JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML_javascript技巧

一.IE中的XML DOM支持 IE对XML的支持是基于ActiveX的MSXML库. 1.DOM创建 对每个新版本的MSXML,都会创建出不同的XML DOM对象,所以尽量选择新的XML DOM版本. 2.载入XML 载入XML分两种,即: 载入XML字符串:loadXML(xml字符串) 载入xml文件:load(xml文件路径).默认情况下文件载入是异步的,如果要改为同步把asynce特性改为true即可.异步载入文件时要用到readyState和onreadystatechange事件处

JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js_javascript技巧

检测浏览器的方式 1.对象特征检测法:判断浏览器能力的通用方法.如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法.常见的原生Ajax写法中就用这种方法来创建XMLHttpRequest: 复制代码 代码如下: IXHR: function(){ if(window.ActiveXObject){ XHR=new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ XHR=new XMLHttp

javascript高级程序设计阅读笔记(一)

工作之余开发些web应用作为兴趣,在交互方面需要掌握javascript和css.HTML5等技术,因此读书笔记是必要的.   javascript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能. 文档对象模型 DOM document object model,针对X