1. !的优先级比==要高,所以会先执行![]。也就是先把[]转为布尔类型再取反。[]转布尔值是true,为什么呢?因为在JavaScript里除了false自身以外只有5个假值,分别是“”,undefined, null, 0, NaN。除了这5个假值以外,其他所有值转布尔类型都是true。一切对象都是真值,包括new Boolean(false)。于是问题就成了 [] == false了
  2. 当"=="号两边其中一个是布尔值的话,先把它转换为数字(ECMAScript的规范)。于是就变成了求[] == 0。
  3. 当"=="的一边是字符串或数字,另一边是对象的时候(数组也是对象),先把对象值转换为原始值再判断相等。对象值到原始值是怎么转换的呢?.对于所有非日期雷对象来说,对象到原始值的转换基本上就是对象到数字的转换。有3个步骤:1.所有对象先调用valueOf()方法,如果此方法返回的是原始值,则对象转为这个原始值。 2.如果valueOf方法返回的不是原始值,则调用toString方法,如果toString方法返回的是原始值吗,则对象转换为这个原始值。 3.如果valueOf和toString方法均没有返回原始值,则抛出TypeError异常. 请看笔记"关于 valueOf() 和 toString()"
  4. []到原始值的转换是怎么样的?首先调用[].valueOf()方法,返回值是对象自身,即[],这不是一个原始值。所以继续调用[].toString()方法,返回的是空字符串"",这是一个原始值,所以此值就作为对象转换为原始值的输出。于是问题就变成了求"" == 0.
  5. 当"=="两边一个是字符串一个是数字的时候,先把字符串转为数字,再进行比较。“”转成数字为0,所以最后得出[] == false为true。

来自 http://my.oschina.net/u/1274710/blog/293733

转载于:https://www.cnblogs.com/bestend/p/4459525.html

[]==![]为true相关推荐

  1. CDH6.1.0环境搭建 完成后 登录admin账户失败

    CDH环境搭建完成,启动cloudera-manager-server成功,下面是启动日志 [root@node-1 ~]# sudo systemctl start cloudera-scm-ser ...

  2. JavaScript 使用小技巧

    因为这两篇太安逸了,东西很多,很实用,所以转到我格子里! 总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl ...

  3. php true true true,php-为什么此评估为true

    标签:php 乳清这算是真的吗? $val2=0; //outputs that is an error123 if($val2=='error123'){ echo 'that is an erro ...

  4. intval0.57100 php_php中0,'',null,false,true,FLASE,TREU,array()的相等恒等学习

    //比较值 '' NULL 0 false true FALSE TRUE //相等判断 //'' == NULL == 0 == false (相等) //array() = 0 == NULL = ...

  5. 回文数:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    1.方法一:将数字转换为字符串,并检查字符串是否为回文 #include<iostream> using namespace std;class Solution { public:boo ...

  6. 【Qt】在Qlayout中Qlabel::setScaledContents(true);失效

    Qlabel中添加图片,并使图片自适应Qlabel的大小 QPixmap picture;picture.load("./1.jpg");ui->label->setS ...

  7. ajax的auto是true,一个AJAX自动完成功能的js封装源码[支持中文]

    Screenshots Pagination Internationalization Rich format Text selection源码下载 有个问题,等高手解决,就是怎么搞都不能支持中文,不 ...

  8. (札记)Altera Stratix IV系列FPGA TRUE LVDS RX input termination 在Quartus工程中的设置方法...

    Altera Stratix IV系列FPGA Row bank的TRUE LVDS_RX支持oct(on chip termination),所以设计的时候不需要外接一个100ohm电阻.备注:我使 ...

  9. 解决Swift中present(uiImagePickerController,animated: true,completion: nil)闪退的问题

    swift中开发选择图片上传,会使用到Tap Gesture Recognizer控件,对应 UITapGestureRecognizer API,以下是代码示例(取自IOS developer li ...

  10. OnCheckedChanged的触发需要AutoPostBack=true

    OnCheckedChanged的触发需要AutoPostBack="true" 

最新文章

  1. matlab 图像操作函数的详解
  2. Solr所有的查询解析器Query Parsers(转:http://blog.csdn.net/jiangchao858/article/details/53859731)
  3. 第一次刷Leetcode,为什么耗费很多时间
  4. dvwa php sql,DVWA phpstudy安装
  5. 如何在阿里云上运行SAP UI5应用
  6. figma设计_Figma与Adobe XD:我们如何选择下一个设计工具
  7. (2021) 22 [持久化] 1-Bit的存储
  8. oracle 常用知识点整理
  9. java多线程的基本实现方式与示例
  10. ClamAV学习【6】—— cli_load函数浏览
  11. 微信支付v3 php 源码,求微信支付wxpayv3服务端完整代码
  12. .NET MVC权限控制设计
  13. Photoshop 技能167个 经典的Photoshop技巧大全
  14. Android应用生命周期实现简单的秒表App
  15. UI面试常见问题及回答
  16. android inflate,android inflate详解
  17. 计算机课程设计-基于ssm+vue的物资管理系统(前后端分离)-物资出库入库管理系统java代码
  18. 访问ip不在白名单中,请参考FAQ:
  19. 侍魂胧月传说服务器维护,侍魂胧月传说手游7月1日停机维护更新公告
  20. 分布式查询工具-Apache Drill

热门文章

  1. 20150309+Linux+LAMP安装-02
  2. 74. Search a 2D Matrix (Graph; Divide-and-Conquer)
  3. java反序列化漏洞 tomcat_CVE-2020-9484 Apache Tomcat反序列化漏洞浅析
  4. iphone以旧换新活动_【武商襄阳购物中心】 参与iphone以旧换新活动,最高可抵4300元,旧机可享10%额外补贴...
  5. 小a的计算器(牛客签到题A)-简单模拟
  6. 开放报名 | 阿里云 Serverless 研修班走进四川大学
  7. 深度解读 MongoDB 4.4 新特性
  8. 在地理文本处理技术上,高德有哪些技巧?
  9. 学Java编程选择Java面授教学最有效
  10. 【译】Celeste 手感的 10 个设计细节