类型转换的小乐趣

作者:怿飞 来源:怿飞blog 时间:2010-11-30 21:37:00 

玉伯 的文章 《一道大题目,嘿嘿》 中有这样一段代码:

[] == ![]

也许很多同学迷惑:咦,这个如何转换呢?

首先,我们了解下逻辑 NOT(!)运算与等号(==)运算的一些基本规则:

  1. 逻辑 NOT 运算中,如果运算数是对象,返回 fasle;

  2. 等号运算中,如果一个运算数是 Boolean 值,在运算前,会将其转换成数字:false -> 0,true -> 1;

  3. 等号运算中,如果一个运算数是对象,另一个是数字,在运算前,会将对象转换成数字。

2010年11月2日补充:对象不能直接转换成数字型,可以将其转换成字符型,再将字符型转换成数字型。

根据上面的一些规则,我们再来看看原来的表达式如何演变:

Step01: [] == ![] // 由于[]是对象,则 ![] 返回fasle,演变为 Step02。
Step02: [] == fasle // 由于 fasle 是 Boolean 值,则转换成数字 0,演变为 Step03。
Step03: [] == 0 // 由于 0是数字,[]是对象,[] 转换成数字 Number([]) -> 0,[] 转换成字符型 [].toString() -> "","" 再转换成数字型 -> 0 ,演变为 Step04。
Step04: 0 == 0 // 返回最终结果:true

思考题:

{} == ! {}; //返回什么值?
[] == [] //返回什么值?

PS:如果你对玉伯的题目很感兴趣,推荐阅读:

标签:类型,转换
0
投稿

猜你喜欢

  • Zend Framework教程之资源(Resources)用法实例详解

    2023-11-06 02:49:50
  • Python制作一个多功能音乐播放器

    2022-06-15 10:16:05
  • 从绘画语言的发展,看视觉设计风格

    2008-08-03 17:11:00
  • python如何利用Mitmproxy抓包

    2022-06-15 13:18:16
  • python基于selenium爬取斗鱼弹幕

    2022-08-30 16:36:19
  • Selenium常见异常解析及解决方案示范

    2023-06-27 20:09:48
  • Web 标准设计实践:Google 的首页

    2008-10-12 12:14:00
  • 如何做网页设计的10个小窍门

    2010-04-11 22:30:00
  • Django的restframework接口框架自定义返回数据格式的示例详解

    2023-06-13 05:13:51
  • Python之京东商品秒杀的实现示例

    2023-01-31 05:49:07
  • asp,php 和 jsp 比较 之我见

    2007-08-10 13:35:00
  • javascript实现playfair和hill密码算法

    2024-04-18 10:46:28
  • Transactional replication(事务复制)详解之如何跳过一个事务

    2024-01-19 15:41:16
  • Mysql自带profiling性能分析工具使用分享

    2024-01-14 17:48:24
  • Python五种下划线详解

    2021-10-02 02:45:38
  • Python从list类型、range()序列简单认识类(class)【可迭代】

    2022-09-09 14:07:20
  • 简单三步实现报表页面集成天气

    2024-04-25 13:08:16
  • Python对HTML转义字符进行反转义的实现方法

    2022-07-27 08:44:34
  • Python使用Selenium模拟浏览器自动操作功能

    2021-01-19 07:55:33
  • python实现Decorator模式实例代码

    2022-05-10 06:04:56
  • asp之家 网络编程 m.aspxhome.com