类型转换的小乐趣
作者:怿飞 来源:怿飞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
投稿
猜你喜欢
- 在VBScript中有Filter这个函数可以用来对数组进行过滤,并返回原数组的一个子集数组。语法说明: 引用内容Filter 函
- 计是一个输入-输出的过程,因为首先有用户的需求,客户的项目才有设计的产生,设计是带有目的性和市场行为的,当然也有一部分的创造性设计,仅仅为了
- 以前经常吃公司旁边的食堂,人多,排队。夏天的时候,我们总要找一个靠窗口通风好的地方坐,没有空调只有风扇,风扇很多,开关都集中在一个地方,应该
- 本文帮你六步改善SQL Server安全规划全攻略。一、什么是SQL注入式攻击所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的
- 在开发 图像 动画 游戏 相关的程序时, 双缓冲( double-buffer )一直是程序员常用(必用)的技巧. 当然 随着各种引擎 框架
- 阅读上一章:打印样式Chapter 12 CSS布局本书到此为止,讨论的主要是页面内部元素,也就是内容,但是大结构怎么办?长久以来,设计者都
- 见下表:序号保留字序号保留字序号保留字1ADD80ESCAPE159OR2ABSOLUTE81EXCEPT160ORDER3ACTION82
- 快捷键可以帮助我们有效提高效率,我们来看看网页设计软件FrontPage有哪些快捷键。相关文章:Dreamweaver快捷键大全、photo
- 使用SQL Server事件探查器工具,你可用一个捕获到的跟踪来收集有关服务器的重要信息。与索引优化向导(Index Tuning Wiza
- 当系统出现故障时,只要存在数据日志那么就可以利用它来恢复数据解决数据库故障。作为SQL Server数据库管理员,了解数据日志文件的作用,以
- 如何随机显示图片计数器?一切就绪,看看我们的代码:count.asp< html >< head >
- 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考虑流量的话,大可以像pconline一样每个页面只显示一张图片,让用户每看一张图
- 一个封装好的JavaScript拖动类,使用方便:<div id="idDrag" style="bor
- <base href="http://digi.tech.qq.com/images/ld/2007/1022/
- 大部分数据库管理员拥有某种形式的数据库元数据库,他们依赖其来跟踪范围很广的Microsoft SQL Server环境。我利用连接的服务器和
- asp定时生成静态HTML的代码,对于缓解服务器压力有很大帮主,需要的朋友可以参考下。<% '判断是否要生成新的HT
- asp使用fso读取驱动器信息:<%vv=drive()response.write vv funct
- 但是如果是让你接手一个二等残废的网站,并让你在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么你会非常痛苦,例如我遇到的问题: 问题
- 如何用POP3接收电子邮件?POP3大行其道,我看见朋友已经用Jmail和POP3接收邮件了。该如何做?以Jmail4.1为例,我们演示一下
- 使用ewebeditor作为后台编辑器时,尤其是一个页面中使用多次该编辑器时,在提交数据时,可能会遇到数据被重复提交的情况。搜索找来一些解决