zoukankan      html  css  js  c++  java
  • js中的==运算: [''] == false —>true

    图1

    计算下面表达式的值:

    [''] == false
    

    首先,两个操作数分别是对象类型、布尔类型。根据图1,需要将布尔类型转为数字类型,而false转为数字的结果是0,所以表达式变为:

    [''] == 0
    

    两个操作数变成了对象类型、数字类型。根据图1,需要将对象类型转为原始类型:

    • 首先调用[].valueOf(),由于数组的valueOf()方法返回自身,所以结果不是原始类型,继续调用[].toString()。

    • 对于数组来说,toString()方法的算法,是将每个元素都转为字符串类型,然后用逗号','依次连接起来,所以最终结果是空字符串'',它是一个原始类型的值。

    此时,表达式变为:

    '' == 0
    

    两个操作数变成了字符串类型、数字类型。根据图1,需要将字符串类型转为数字类型,前面说了空字符串变成数字是0。于是表达式变为:

    0 == 0
    

    到此为止,两个操作数的类型终于相同了,结果明显是true。

    不造你看没看懂,反正我是看懂了,哈哈

    想了解更多关于==的运算点击下面大神的链接吧~

    作者:苏云
    链接:https://zhuanlan.zhihu.com/p/21650547
    来源:知乎

  • 相关阅读:
    mssql 2008 数据库可疑
    sss
    css 浏览器兼容 重置代码
    .net 接口与 foreach必要条件
    .net获取ip
    flash与js的通信
    WebService传输文件的几个知识点
    【前端】深入浅出Javascript中的数值转换
    [前端]代理知识入门介绍
    Hello 博客园! ---致我人生中的第一篇随笔
  • 原文地址:https://www.cnblogs.com/zhangym118/p/5696061.html
Copyright © 2011-2022 走看看