javascript加性操作符:操作数中有null和undefined的情况
来源:互联网 发布:怀孕软件排行第一 编辑:程序博客网 时间:2024/05/22 14:38
在《javascript 高级程序设计》第三版中,3.5.5小节讲述加性操作符,其中关于操作数有undefined和null有误。原文是:对于undefined和null,则分别调用String()函数并取得"undefined"和“null”。然而,实际操作并非如此。
1.操作数中有undefined的情况
var a = undefined;var b = null;console.log(a+b); //NaNvar a = undefined;var b = 1;console.log(a+b);//NaNvar a = undefined;var b = '1';console.log(a+b);//undefined1var a = undefined;var b = true;console.log(a+b); //NaNvar a = undefined;var b = {};console.log(a+b);//undefined[object Object]var a = undefined;var b = {toString:function(){return '+toString'}};console.log(a+b);//undefined-toString 如果操作数中有一个是对象,则调用toString()方法取得相应的字符串然后在相加。书中原话,看后面个例子证明这句话错了var a = undefined;var b = {valueOf:function(){return '-toString'}};console.log(a+b);//undefined-toString 如果操作数中有一个是对象,则调用toString()方法或valueOf()取得相应的字符串然后在相加
总结:据上述结果推测,如果操作数中有一个是对象或者是字符串,则取得相对应的字符串值,然后与另一个操作数相拼接。如果操作数中有一个是布尔值,则将布尔值转化为数值,同时将另一个操作数也转换为数值,undefined转化为数值是NaN,所以布尔值与undefined相加结果为NaN。如果操作数中有一个是数值,则另一个操作数也转换为数值,于是数值和undefined相加为NaN。
2.操作数中有null的情况
var a = null;var b = 1;console.log(a+b); //1var a = null;var b = '1';console.log(a+b); //null1var a = null;var b = true;console.log(a+b); //1var a = null;var b = false;console.log(a+b); //0var a = null;var b = {toString:function(){return '-toString'}};console.log(a+b); //null-toString总结,操作数中在有对象或者字符串的情况下,两个操作数转换为字符串,然后相拼接。在操作数有一个是布尔或者数值的情况下,null就要通过数值转换为0.
3.操作数中有布尔值的情况
var a = {};var b = true;console.log(a+b); //[object Object]truevar a = 1;var b = true;console.log(a+b); //2var a = '1';var b = true;console.log(a+b); //1truevar a = true;var b = true;console.log(a+b); //2var a = false;var b = true;console.log(a+b); //1总结:如果有一个操作数布尔值,另外一个操作数为对象或者字符串,那么就将布尔值转换为字符串然后进行拼接。如果有一个操作数为布尔值,另一个操作数不为对象或者字符串,则将这两个操作数都转换为数值,然后按数值相加。
0 0
- javascript加性操作符:操作数中有null和undefined的情况
- javascript的null和undefined
- javaScript的null和undefined
- javascript 的null和undefined
- javascript null和undefined
- JavaScript null 和 undefined
- javascript的undefined和null的区别
- JavaScript的null和undefined的区别
- JavaScript 中 null 和 undefined 的区别
- JavaScript中的null和undefined的区别
- JavaScript的null和undefined区别
- JavaScript Null和Undefined的区别
- JavaScript Null和Undefined的区别
- JavaScript中null和undefined的区别
- javascript中undefined和null的区别
- JavaScript中null和undefined的理解
- javascript中undefined和null的比较
- JavaScript中null和undefined的区别
- CentOs下安装svn服务器
- 简单的CSS下拉菜单
- hdu1598find the most comfortable road(并查集+枚举,求起点到终点的边中最大边减最小边差值最小)
- XYZZY uva BFS+DFS
- [GitHub][2014-05-16 00:00:12]ckeditor-dev
- javascript加性操作符:操作数中有null和undefined的情况
- CSS下拉导航菜单效果 详细出处参考:http://www.jb51.net/article/5959.htm
- OpenProcess
- 很漂亮的CSS水平下拉菜单,有个性
- Treap的读书笔记2
- Hibernate一对一外键双向关联(xml配置篇)
- 垂直下拉菜单
- android 画环形的资料
- ACM练习之《P1333Cantor表》