喜欢我的都关注我了
北妈每日一题
在社区或者群里,总不定时收到各种“奇葩+天秀的js问题”,比如 []+[]+[] 答案,1+“1”+【】怎么解啊?等等
我不知道这些天才是对编程真爱,还是因为时间很多,但提出这种问题还不算什么,牛鼻的是解答这些问题的牛人们。
下面跟着小北哥哥看每日一题:++[[]][+[]]+[+[]] = ?
这个问题我是不会的,真的,解这类题,要翻很多JS基础属性资料,但不代表牛人们不会或者不想解答,下面来看看牛人的庖丁解牛
这是一个Javascript 语言题目,一个完全有效的等式,不信自己可以试一下,下面看看高人的题解:
如果把这段表达式拆分开来,它相等于:
在 JavaScript 里, 是完全正确的。 会把一些字符转化成数字,在这里,这个式子会变成 或 。
因此,我们可以简化一下( 比 有更高的优先级):
因为 的意思是:获取 的第一个元素,这就得出了下面的结果:
返回内部数组 ()。根据语言规范,我们说 是不正确的,但让我们把这个内部数组称作 A,以避免错误的写法。
, 因为 的意思是”加一”。
;换句话说,你得到的永远是个数值( 并不一定得到的是个数值,但 一定是)。
同样,我们可以把这一堆代码简化的更清晰。让我们把 A 换回成 :
在 JavaScript 里,这也是正确的:,因为 (这相当于一个空的数组的内部元素连接),于是:
让我们再次简化一下:
同样,在 Javascript 里,这是正确的:,因为这是相当于一个有一个元素的数组的内部元素的连接。 各元素会使用,分隔。 当只有一个元素时,你可以推论出这个过程的结果就是它自身的第一个元素。
所以,最终我们得到 (数字 + 字符串 = 字符串):
牛鼻不?佩服不,我去验证和查了犀牛书,还真的是,大神基础扎实不得不服啊,也希望各位不单单要钻
牛角尖,而是在钻研的过程中,掌握更多的基础。
觉得有帮助,
就尽快转发、传播吧!
每天只想听你们说:小北最帅!
前端你别闹
领取专属 10元无门槛券
私享最新 技术干货