js容易犯错的知识点
2016-03-28 15:06
537 查看
1. 判断
[] == false --> true
![] --> false
[] == [] --> false
[] == ![] --> true ??????
typeof([])是个object typeof(![])就成了Boolean
alert([])是个空 alert(![]) 是个false javascript中一切空或者0在做比较的时候都会转化成boolean值false所以 答案很明显了 false equals false
楼上的答案不标准,也可以说有些错误。
执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
[] == false --> true
![] --> false
[] == [] --> false
[] == ![] --> true ??????
typeof([])是个object typeof(![])就成了Boolean
alert([])是个空 alert(![]) 是个false javascript中一切空或者0在做比较的时候都会转化成boolean值false所以 答案很明显了 false equals false
楼上的答案不标准,也可以说有些错误。
执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
相关文章推荐
- JS进阶书籍
- js辅助添加横向滚动条
- js五种设计模式说明与示例
- JS代码放在何处?
- js中的进制转换
- jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
- GetJson
- [BZOJ1015][JSOI2008]星球大战starwar
- javascript中获取class
- 禁止页面后退JS(兼容各浏览器)
- js操作cookie的一些注意项
- 2.2JSON数据解析(一)
- [BZOJ1016][JSOI2008]最小生成树计数
- JSP 自定义标签tld--页面片段fragment
- 说说JSON与JSONP
- OpenJsCad - 在线3D图像浏览与编辑
- 【B/S】JavaScript简介
- [BZOJ1027][JSOI2007]合金
- JS通过设置cookie来控制弹出层,首次打开页面显示弹出层
- 选项卡的JavaScript实现