首页前端开发其他前端知识PHP面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么

PHP面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么

时间2023-04-21 19:18:01发布访客分类其他前端知识浏览917
导读:这篇“PHP面试题console.log(([][[]] + [] [+!![]]+([]+{} [+!![]+ + !![]] 输出什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值...
这篇“PHP面试题console.log(([][[]] + [])[+!![]]+([]+{ } )[+!![]+ + !![]])输出什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP面试题console.log(([][[]] + [])[+!![]]+([]+{ } )[+!![]+ + !![]])输出什么”文章吧。

前言

面试题console.log(([][[]] + [])[+!![]]+([]+{ } )[+!![]+ + !![]])输出什么?

解决这个题目需要的知识

  • “+”:一元+会执行与使用Number()一样的转换

  • 如果+号是两个数相加,任一操作数是对象、数值或者布尔,则调用它们的toString方法转为字符串

  • “!”:非操作符,这个操作始终返回布尔值

  • “!!”:强制转为布尔值

解决这个题目([][[]] + [])[+!![]]+([]+{ } )[+!![]+ + !![]]

首先我们要先理清它的执行顺序

首先执行([][[]] + []),先执行里面的[][[]],在计算 [][[]]时,其实就是执行[]空数组里面key为[]的值

  1. 首先,JavaScript 引擎解析空数组 []。空数组没有任何元素。

  2. 接下来,引擎尝试使用 [] 作为属性名来访问空数组的属性。在这种情况下,由于 [] 本身是一个数组,JavaScript 引擎会尝试将其转换为字符串。由于 [] 为空数组,转换成字符串后结果为一个空字符串 ""

  3. 最后,引擎会尝试访问空数组中名为 "" 的属性。由于这个属性并不存在于空数组中,所以结果为 undefined

所以,执行 [][[]] 的结果是 undefined

那么([][[]] + [])接下去执行就是(undefined + []) 将会执行隐式类型转换,将undefined转换为字符串"undefined",将[]转为“”,然后将两个字符串拼接在一起。因此,结果是"undefined"

其次执行[+!![]],!![]空数组转布尔值为true,一元操作服+会转为数值,+true就是将true转换为数字1。得到的结果就是[1]。于是我们就可以得到([][[]] + [])[+!![]]undefined[1]这个的结果就是字符串'n'

接下来就是执行([]+{ } )[+!![]+ + !![]] 这一部分,再将这部分的结果和上面的结果相加

  1. 先执行([]+{ } ), 计算[]+{ } 。这将触发隐式类型转换,将空对象转换为字符串"[object Object]",然后将两个字符串拼接在一起。因此,结果是'[object Object]'

  2. 再执行[+!![]+ + !![]], +!![]前面有解析过得到的是1,所以这一部分执行过后得到的是数值1相加1+1,得到的结果是[2]

  3. 那么这两部分合起来就是'[object Object]'[2],就是字符串的第三个值b

最后将前面部分得到的结果 'n' 和后面部分得到的结果 'b' 相加,得到最后的结果'nb'

以上就是关于“PHP面试题console.log(([][[]] + [])[+!![]]+([]+{ } )[+!![]+ + !![]])输出什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

php

若转载请注明出处: PHP面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
本文地址: https://pptw.com/jishu/4637.html
linux组的作用有哪些 vue转发200状态码如何解决

游客 回复需填写必要信息