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


Posted in Javascript onFebruary 27, 2012

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;

逗号运算符最常用于变量声明中。

Javascript 相关文章推荐
IE/FireFox具备兼容性的拖动代码
Aug 13 Javascript
IE之动态添加DOM节点触发window.resize事件
Jul 27 Javascript
fancybox modal的完美解决(右上的X)
Oct 30 Javascript
js调试工具console.log()方法查看js代码的执行情况
Aug 08 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
jQuery限制图片大小的方法
May 25 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
vue移动端实现红包雨效果
Jun 23 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 Javascript
react+antd 递归实现树状目录操作
Nov 02 Javascript
JavaScript 实现继承的几种方式
Feb 19 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 #Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 #Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 #Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
Feb 27 #Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
Feb 27 #Javascript
JavaScript 代码压缩工具小结
Feb 27 #Javascript
根据邮箱的域名跳转到相应的登录页面的代码
Feb 27 #Javascript
You might like
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
9种方法优化jQuery代码详解
2020/02/04 jQuery
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
python实现人脸签到系统
2020/04/13 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
应届生程序员求职信
2013/11/05 职场文书
2014年司法所工作总结
2014/11/22 职场文书
八一建军节慰问信
2015/02/14 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
python套接字socket通信
2022/04/01 Python