关于js操作符需要注意的地方
本文仅仅介绍部分js操作符在实际应用中需要注意的地方。
- 布尔操作符:
//1.逻辑与操作属于短路操作,即如果第一个操作数能够决定结果那么就不会再对第二个操作数求值
var found=true;
var result=(found&&variable); //报错
alert(result);
//上面的代码之所以报错是因为found为true,逻辑与操作符会继续对variable进行求值,但variable变量未声明,故报错 //逻辑或也是短路操作,但是逻辑或第一个操作数的求值结果为true时才不会对第二个操作数求值。这一点和逻辑与相反。 - 关系操作符:
//1.如果两个操作数都是字符串则比较字符串对应的字符编码值,2.任何操作数与NaN进行关系比较结果都是false,包括NaN与NaN本身的比较也是false var result="a"<3; //false,因为“a”被转换为NaN了
- 相等操作符:相等和不相等是先对操作数进行强制转型然后在比较他们的相等性,遵循规则如下:
- 如果有一个操作数是布尔值,则在比较相等性之前先将起转换为数值;
- 如果有一个操作数是字符串,另一个操作数是数值,则在比较前先将字符串转换为数值;
- 如果一个操作数是对象,另一个不是,则调用对象的valueOf()方法,用得到的结果按照前面的规则进行比较,如果没有valueOf()方法则调用toString()方法对结果做比较;
- null和undefined是相等的,这是ECMAScript规范里规定的;
- 在比较相等性之前不能将null和undefined转换成其它任何值;
表达式 值 表达式 值 null==undefined true true==1 true NaN!=NaN true true==2 false false==0 true undefined==0 false null==0 false
- 全等和不全等:除了在比较之前不转换操作数之外全等和不全等操作符与相等和不相等操作符没有什么区别,全等操作符由(===)表示;
var result=("55"==55); //true,转换后相等
var result2=("55"===55); //false,数据类型不同,全等不会转换数据类型用全等还是用相等看实际情况,不过优先推荐使用全等,因为相等和不相等存在数据类型转换问题。
关于js操作符需要注意的地方的更多相关文章
- js操作符
JS操作符 x + y(数字) 将x和y相加; x + y(字符串) 将x和y拼接在一起; x - y 从x中减去y; x * y 将x和y相乘; x / y 将x除以y; x % y x和y的模(既 ...
- 项目期复习:JS操作符,弹窗与调试,凝视,数据类型转换
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/huangyibin628/article/details/26364901 1.JS操作符 ① 除法 ...
- Javascript高级编程学习笔记(5)—— JS操作符
话不多说,开始今天的码字之旅. 突然有种日更小说的感觉,emm... 操作符 ECMAScript(JS核心)描述了一组用于操作数据值的操作符,也包括算术操作符等等 而JS中这些操作符最鲜明的特点就是 ...
- js操作符总结
算数操作符加法操作符(+),减法操作符(-),除法操作符(/),乘法操作符(*)还可以把多种操作组合在一起:1+4*5避免产生歧义,可以用括号把不同的操作分隔开来:1+(4*5):(1+4)*5变量可 ...
- js操作符+和()
ECMA-262 描述了一组用于操作数据值的操作符,包括一元操作符.算数操作符逻辑操作符.关系操作符.赋值操作符.字符串操作符.对象操作符等.ECMAScript 操作符的与众不同之处在于,它们能够适 ...
- js操作符类型转换
乘法 我们来看下前面的题目: console.dir(5*"5"); console.dir(5*"a");//NaN console.dir(5*NaN);/ ...
- js + -操作符
js + 举例说明最有效了... "11"+1='111' "11"+'1'="111" 11+1=12 大概的感觉就是+操作符会优先输入S ...
- js &&操作符解析
转载自:http://www.cnblogs.com/huchaoheng/p/4066473.html 前几天看到一个函数,百思不得其解,今天早上醒来看了本js的书,正好讲到操作符的用法,给大家分享 ...
- js基础-需要注意的地方
---因为跟别的语言很像,所以只记录要注意的地方 1.== 和 === 的区别 ===要求类型也相等 "5"==5 = ture "5"===5 = false ...
随机推荐
- Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例
Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...
- POJ 3710 无向图简单环树上删边
结论题,这题关键在于如何转换环,可以用tarjan求出连通分量后再进行标记,也可以DFS直接找到环后把点的SG值变掉就行了 /** @Date : 2017-10-23 19:47:47 * @Fil ...
- Spring Mvc Web 配置拦截规则与访问静态资源 (三)
拦截规则配置 1. *.do <!-- Processes application requests --> <servlet> <servlet-name>app ...
- SDWebImage源码阅读-第二篇
一 SDWebImageManager的downloadImageWithURL的方法 上一篇,我们刚开了个头,分析了一下开始加载图片之前如何取消其他正在下载的任务,接着,我们回到 - (void) ...
- JavaScript 中创建三种消息框:警告框、确认框、提示框。
网址:http://www.w3school.com.cn/js/js_popup.asp 警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语 ...
- 第7月第11天 AVAsset
1. An AVAsset defines the collective properties of the tracks that comprise the asset. (You can acce ...
- C# p2p UDP穿越NAT,UDP打洞源码
思路如下(参照源代码): 1. frmServer启动两个网络侦听,主连接侦听,协助打洞的侦听. 2. frmClientA和frmClientB分别与frmServer的主连接保持联系. 3. 当f ...
- springboot整合rabbirmq(3.7.9)中使用mandatory参数获取匹配失败的消息以及存入rabbitmq备份交换器中!
先说下这个参数的作用: /** * Mandatory为true时,消息通过交换器无法匹配到队列会返回给生产者 * 为false时,匹配不到会直接被丢弃 */在一些特定场景下还是有用处的!接下来说一下 ...
- 对象克隆及属性转换-JavaScript
在某些项目中,需要将一些返回信息进行其他语言的翻译,可以为不同语言用户提供不同的语言版本.下面是一个实现: /** * @class Translate * @description 查询字典,翻译成 ...
- 数组中累加和小于等于k的最长子数组
问题描述: 给定一个无序数组arr,其中元素可正.可负.可0,给定一个整数 k.求arr所有的子数组中累加和小于或等于k的最长子数组长度.例如:arr=[3,-2,-4,0,6],k=-2,相加和小于 ...