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 autocomplete internet explorer's autocomplete
Jun 30 Javascript
javascript得到XML某节点的子节点个数的脚本
Oct 11 Javascript
实现局部遮罩与关闭原理及代码
Feb 04 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 Javascript
JavaScript 学习笔记之变量及其作用域
Jan 14 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
Nov 21 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
js实现全选和全不选功能
Jul 28 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
Aug 24 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php获取数据库结果集方法(推荐)
2017/06/01 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
jQuery tip提示插件(实例分享)
2017/04/28 jQuery
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
详解Python3 基本数据类型
2019/04/19 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
Python如何读写CSV文件
2020/08/13 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
化工机械应届生求职信
2013/11/04 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
授权委托书样本
2014/04/03 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2015年检验科工作总结
2015/04/27 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
小平您好观后感
2015/06/09 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
班级管理经验交流材料
2015/11/02 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python