类型转换的小乐趣
作者:怿飞 来源:怿飞blog 时间:2010-11-30 21:37:00
在 玉伯 的文章 《一道大题目,嘿嘿》 中有这样一段代码:
[] == ![]
也许很多同学迷惑:咦,这个如何转换呢?
首先,我们了解下逻辑 NOT(!)运算与等号(==)运算的一些基本规则:
逻辑 NOT 运算中,如果运算数是对象,返回 fasle;
等号运算中,如果一个运算数是 Boolean 值,在运算前,会将其转换成数字:false -> 0,true -> 1;
等号运算中,如果一个运算数是对象,另一个是数字,在运算前,会将对象转换成数字。
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