javascript - js黑魔法:+[] 等于0?
高洛峰
高洛峰 2017-04-11 11:31:59
[JavaScript讨论组]

这个问题,一张图就够了!

为什么+[]等于0?我还试过别的:

除了百思不得其解,我想不出其他词了……

+是什么意思?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
PHPz

+[]

  1. [].valueOf() // 返回数组自身,不是原始数据

  2. 调用 [].toString() // 返回空字符串

  3. Number("") // 空字符串转型为数字,返回0

PHP中文网

你还没见过更黑魔法的呢

  1. []+{} = "[object Object]"

  2. {}+[] = 0

javascript的这类黑魔法其原因就是它的隐式变换规则造成的。
碰到这种问题,直接去翻规范。

伊谢尔伦

大犀牛上面有解释,+前缀是转换为数字,!!前缀是转换为布尔型

阿神

你需要了解数据类型转换规则
+默认隐式转换都转为数字类型 Number() ,空字符串、null、空数组都是转换为0的

伊谢尔伦

既然我看见了,我也发一个,你们不要打我啊,我只是觉得和这个题目很贴切!!!

 (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

运行上面的js试试,我好邪恶!!!

大家讲道理

+"" 等于你的 +[] 等于 0

"" 等于你的 []

+代表数字中的正号

如果+的右边是字符串那么他会将字符串强制转换为数字,由于JS中空也相当于0,自然就转换成了0

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号