详解JS运算符
来源:互联网 发布:手机计算器软件 编辑:程序博客网 时间:2024/04/30 11:21
加法运算符
如果算术运算的值不是数值,那么js
后台会先使用Number()
转型函数将其转换为数值:var num = 1 + NaN;//NaN,只要有一个NaNny就为NaNvar num = 10 + '10';//1010,'+'为字符串连接符,有字符串就不是加法var box = '你的岁数是:'+10+10;//你的岁数是:1010,被转换成字符串var box = '你的岁数是'+(10+10);//你的岁数是:20,没有被转换成字符串var box = 10+10+'是你的岁数';//20是你的岁数,没有被转换成字符串
逻辑操作符
逻辑与(&&)
1. 第一个操作数是对象,则返回第二个操作数 2. 第二个操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false; 3. 有一个操作数是null,则返回null; 4. 有一个操作数是undefined,则返回undefined。var box = 对象 && (5>4);//true,返回第二个操作数var box = (5>4)&&对象;//[object Object]var box = (3>4)&&对象;//falsevar box = (5>4)&&null;//null
逻辑或(||)
var result = true || false;
与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下列规则:□ 如果第一个操作数是对象,则返回第一个操作数。□ 如果第一个操作数求值为false,则返回第二个操作数。□ 如果两个操作数都是对象,则返回第一个操作数。□ 如果两个操作数都是null,返回null□ 如果两都为`undefined`,返`undefined`。□ 如果两都为`NaN`,返`NaN`var box = 对象||(5>3);//[object Object]var box = (5>3)||对象;//truevar box = 对象1 || 对象2;//[object Object]var box = null || null;//nullvar box = NaN || NaN;//NaNvar box = undefined || undefined;//undefined
逻辑非
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它会先将这个值转换成布尔值,然后取反,规则如下: 1. 操作数是一个对象,返回false 2. 操作数是一个空字符串,返回true 3. 操作数是一个非空字符串,返回false 4. 操作数是数值0,返回true 5. 操作数是任意非0数值(包括Infinity),false 6. 操作数是null,返回true 7. 操作数是NaN,返回true 8. 操作数是undefined,返回truevar box = !{};//falsevar box = !'trigkit';//falsevar box = !0;//truevar box = !null;//truevar box = !NaN;//truevar box = !8;//false
对于双感叹号!!
的写法其实是Boolean()
的简写法。比如下面是来自underscore.js
的一段源码:// Is a given value a DOM element? _.isElement = function(obj) { return !!(obj && obj.nodeType === 1); };
返回的值就是布尔值关系运算符
1.两个操作数都是数值,则进行数值比较2.两个操作数都是字符串,则比较两个字符串对应的字符编码值3.两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较var num = '3'>22;//falsevar num = '3'>'22';//true,进行第一个数字的比较3>2,所以是truevar num = 'a'>'b';//false,a=97,b=98,ASCII表var num = 'a'>'B';//true,B=66
相等操作符
相等操作符会对操作值进行隐式转换后进行比较:1.如果一个操作值为布尔值,则在比较之前先将其转换为数值,false转成0,true为1;2.如果一个操作值为字符串,另一个操作值为数值,则通过Number()函数将字符串转换为数值3.如果一个操作值是对象,另一个不是,则调用对象的valueOf()方法,得到的结果按照前面的规则进行比较4.null与undefined是相等的5.如果一个操作值为NaN,则相等比较返回false6.如果两个操作值都是对象,则比较它们是不是指向同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则,返回false7.在全等和不全等的判断上,只有值和类型都相等,才返回true,否则返回false;
看下面的实例:var num =2==2;//truevar num = '2'==2;//true,'2'会转成数值2var num = false ==0;//true,false转成数值就是0var num = 'a'=='A';//false,转换后的编码不一样var num = 2==NaN;//false,只要有NaN,都是falsevar num = {}=={};//false,比较的是他们的地址,每个新创建对象的引用地址都不同var age = {};var height = age;var box = age == height;//true,引用地址一样,所以相等
思维导图
分享一张网上找的思维导图:本文作者:Mrcxt
查看更多内容:进入Mrcxt的wordpress博客
0 0
- 详解JS运算符
- 详解js运算符
- JS逗号运算符的用法详解
- JS逗号运算符的用法详解 .
- JS逗号运算符的用法详解
- js中的三目运算符详解
- <Js>运算和运算符
- JS运算符
- js 运算符 || && 妙用
- JS delete 运算符
- js运算符
- js 中的运算符
- js三元运算符
- js三元运算符
- JS 运算符 循环
- js 运算符
- js运算符优先级
- 【JS】【Core】运算符
- 一篇超容易让人理解的KMP算法文章
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- void的使用
- hdu 5795 A Simple Nim(2016 Multi-University Training Contest 6——博弈)
- JAVA线程:概念与原理
- 详解JS运算符
- wamp开启memcache扩展
- 《流程的永恒之道:工作流及BPM技术的理论、规范、模式及最佳实践》书籍导读
- AWT与Swing
- 日常小结-关于模拟登陆的小结-okhttp库的使用小结
- Java集合小总结(花了一晚上的时间)
- 2016年8月8日,我的博客开通了( ̄▽ ̄)
- 树-堆结构练习——合并果子之哈夫曼树
- 12、阻塞队列