关于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 ...
随机推荐
- 生成器python
一.列表生成式 需求:看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 >>> a [0, 1, 2 ...
- Hadoop生态圈-使用Kafka命令在Zookeeper中对应关系
Hadoop生态圈-使用Kafka命令在Zookeeper中对应关系 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.zookeeper保存kafka的目录 二.使用Ka ...
- 【DS】排序算法之快速排序(Quick Sort)
一.算法思想 快速排序,顾名思义,效率比较于其他算法,效率比较高.<算法导论>也专门对其进行讲解.其算法设计使用分治思想,如下: 1)从数组A[p...r]中选择一个元素,将数组划分成两个 ...
- 一个ssm综合小案例-商品订单管理----写在前面
学习了这么久,一直都是零零散散的,没有把知识串联起来综合运用一番 比如拦截器,全局异常处理,json 交互,RESTful 等,这些常见技术必须要掌握 接下来呢,我就打算通过这么一个综合案例把这段时间 ...
- [iOS]图片高清度太高, 导致内存过大Crash
先说一下状况, 后台提供的图片太高清了, 每个图片都在2-4MB, iOS上每个页面需要同时下载并展示10-15张. 这个时候, 如果我多滑动collectionView几次, 直接App就崩溃了(r ...
- JavaScript Cookies取值
http://www.w3school.com.cn/js/js_cookies.asp
- Python学习笔记之逻辑回归
# -*- coding: utf-8 -*- """ Created on Wed Apr 22 17:39:19 2015 @author: 90Zeng " ...
- Hibernate 二级缓存疑难点
一级缓存:缓存实体 二级缓存:缓存实体 Hibernate查询缓存缓存的是查询出来的实体的部分属性结果集和实体的ID(注意这里不是实体). Hibernate查询缓存:对List起作用.但是Hiber ...
- 用Executors工具类创建线程池
多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 线程池主要用来解决线程生命周期开销问题和资源不足问题.通过对多个任务重用线程,线程创建 ...
- 【前端vue开发】vue开发总结