A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© JoyZhang 中级黑马   /  2021-1-15 11:19  /  2017 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家在工作中应该会看到很多人有时候用"==",有时候用"===",今天就讲讲"==" 先做几个题目


[AppleScript] 纯文本查看 复制代码
console.log(1,false == 0)
console.log(2,false == 1)
console.log(3,false == "1")
console.log(4,false == null)
console.log(5,false == undefined)
console.log(6,1 == [])
console.log(7,1 == [1])
console.log(8,[1] == [1])
console.log(9,[] == ![])

答案:1 true,2 false,3 false,4 false,5 false,6 false,7 true,8 false,9 true
刚开始大家做这些题的时候可能心里是很没有底气的,基本是凭感觉,那么我来说一下
相等的转换规则
  • NaN 与任何值不相等,包括NaN自己
  • null 除了 null 和 undefined,与任何值不相等
  • undefined 除了 null 和 undefined,与任何值不相等
  • 操作数两边有数字或者是布尔类型的,就都转换成 数字进行比较
  • 操作数两边如果有字符串,都转成字符串进行比较
  • 如果操作数两边都是引用类型,就比较地址
注意点:上面的规则是从上往下一条条的去匹配规则,匹配到了就应用哪条规则
[AppleScript] 纯文本查看 复制代码
console.log(NaN == 1) // false
console.log(NaN == 0) // false
console.log(NaN == NaN) // false
console.log(null == 1) // false
console.log(null == 0) // false
console.log(null == undefined) // true
console.log(null === undefined) // false
console.log(false == 1) // false 0 == 1
console.log(false == "1") // false
console.log([] == ![]) // true
最后一个为true的原因,![] 为Boolean的false 第4条转换成0,[] 转换成Boolean为true 但是转换成数字是0 所以[] == ![] 的结果是true

提示:
Boolean() 函数可以将任意类型的值转为布尔值 它的转换规则相对简单:除了以下五个值的转换结果为false,其他的值全部为true
undefined,null,0,NaN,''(空字符串)




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马