javascript笔记--(第五章)运算符
2017-02-01 18:02
429 查看
表达式
表达式是ECMAScript中的一个“短语”,解释器会通过计算把它转换成一个值。最简单的表达式是字面量或者变量名function(n) {return x+y;} //函数字面量、函数表达式 box //变量
一元运算符
<script type="text/javascript"> var box = '89'; box++; console.log(box); //90,数值字符串自动转换成数值 var box = 'ab'; box++; console.log(box); //NaN,字符串包含非数值转成NaN var box = false; box++; console.log(box); //1,false转成数值是0,累加就是1 var box = 2.3; box++; console.log(box); //3.3,直接加1 var box = { toString : function() { return 1; } }; box++; console.log(box); //2,不设置toString或valueOf即为NaN </script>
<script type="text/javascript"> var box = '89'; box=+box; console.log(box); //89,数值字符串自动转换成数值 var box = 'ab'; box=+box; console.log(box); //NaN,字符串包含非数值转成NaN var box = false; box=+box; console.log(box); //0,false转成数值是0 var box = { toString : function() { return 1; } }; box=+box; console.log(box); //1,不设置toString或valueOf即为NaN </script>加法和减法运算符一般用于算术运算,也可像上面进行类型转换。
算术运算符
ECMAScript定义了5个算术运算符,加减乘除求模(取余)。如果算术运算的值不是数值,那么后台会先使用Number()转型函数将简单类型值转换为数值(隐式转换),如果该值是对象,则先调用valueOf或者toString方法,再用Number()将其值转换成数值。减法:
var box = 1 - NaN; //NaN,只要有一个NaN就为NaN var box = Infinity - Infinity; //NaN var box = -Infinity - -Infinity; //NaN var box = Infinity - -Infinity; //Infinity var box = -Infinity - Infinity; //-Infinity var box = 100 - true; //99,true转成数值为1 var box = 100 - ''; //100,''转成了0
乘法:
var box = 100 * NaN; //NaN,只要有一个NaN即为NaN var box = Infinity * Infinity; //Infinity var box = -Infinity * Infinity ; //-Infinity var box = -Infinity * -Infinity ; //Infinity
除法:
var box = Infinity / 0;//NaN var box = Infinity / null;//NaN var box = Infinity % Infinity;//NaN var box = -Infinity % Infinity;//NaN var box = -Infinity % -Infinity;//NaN var box = 100 % 0;//NaN var box = 100 % '';//NaN var box = 100 % null;//NaN
关系运算符
和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:1.两个操作数都是数值,则数值比较;
2.两个操作数都是字符串,则比较两个字符串对应的字符编码值;
3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较;
相等和不等的比较:
两个操作数都是对象,则比较他们是否是同一个对象,如果都指向同一个对象,则返回true,否则返回false
在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回false
注意:null在进行等于或者全等比较时,并不会先把值用Number()转换为0
(补充:null>=为true,null<=0为true,null>0为false,null<为false,之所以会这样,是因为在进行>和<时候会将null转换成0,而>=的结果其实是取<的反,<=同理。)
逻辑运算符
有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。逻辑与&&:
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时,遵循已下规则:
1.第一个操作数是对象,则返回第二个操作数;
2.第二个操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false;
3.有一个操作数是null,则返回null;
4.有一个操作数是undefined,则返回undefined。
总结上面几点就是:与运算符在运算时,如果第一个数在转换成布尔值的情况下是false则返回第一个操作数(原值,不一定是布尔值),否则返回第二个操作数
逻辑或||:
如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,此时,遵循已下规则:
1.第一个操作数是对象,则返回第一个操作数;
2.第一个操作数的求值结果为false,则返回第二个操作数;
3.两个操作数都是对象,则返回第一个操作数;
4.两个操作数都是null,则返回null;
5.两个操作数都是NaN,则返回NaN;
6.两个操作数都是undefined,则返回undefined;
总结上面几点就是:或运算符在运算时,如果第一个数在转换成布尔值的情况下是true则返回第一个操作数(原值,不一定是布尔值),否则返回第二个操作数
逻辑非!:
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反。
var box = !(5 > 4); //false var box = !{}; //false var box = !''; //true var box = !0; //true var box = !null; //true var box = !NaN; //true var box = !undefined; //true
相关文章推荐
- JavaScript 中级笔记 第五章 面向对象的基础
- Javascript高级程序设计第二版第五章--引用类型--笔记
- (7)JavaScript学习笔记 - 运算符(续)
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第20讲_js基本数据类型_js运算符1_学习笔记_源代码图解_PPT文档整理
- JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
- Javascript学习笔记(二)Javascript核心之表达式和运算符
- Javascript学习笔记-----运算符
- (6)JavaScript学习笔记 - 表达式和运算符
- 《JavaScript 语言精粹》 学习笔记 —— 第五章 继承
- Javascript高级程序设计第二版第五章--引用类型--笔记
- JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
- JavaScript基础学习笔记(二)——JavaScript 注释、JavaScript 变量、JavaScript运算符
- Javascript学习笔记-详解in运算符
- (6)JavaScript学习笔记 - 表达式和运算符
- JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
- JavaScript学习笔记--第五章.其它
- Javascript学习笔记-详解in运算符
- JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
- JavaScript学习笔记-- 运算符OPERATORS
- 【学习笔记】JavaScript——变量、常量、保留字、运算符与表达式、语句