Advertisement

JS面试 - 打印结果嵌套结构示例

阅读量:

当前存在一段程序代码,请说明其执行后将输出何种结果

复制代码
    ++[[]][+[]] + [+[]]
    
    
    AI写代码javascript
    
    运行

这道题目主要考查的是对运算符基本概念的理解,接下来将对其进行详细解析:

首先,依据运算符优先级最低的符号(+)对整个表达式进行划分,可以将其拆分为两个部分:
++[[]][+[]] 与 [+[]]

++[[]][+[]]

在表达式中,++运算符的优先级最低,因此首先对 [[]][+[]] 进行计算:

该表达式的意图在于:获取数组 [[]] 中索引为 [+[]] 的元素。
[[]] 表示一个数组,其唯一元素为一个空数组。
[+[]] 中的 +[] 会将空数组转换为 Number 类型。由于 [] 是对象类型,转换后得到的结果是 0,因此整体变为 [0]。具体过程如下:+ 运算符会尝试将数据转换为 Number 类型,首先检查 [].valueOf 是否是 Number 类型,结果为 [] 并非 Number。于是转而调用 toString 方法,[].toString() 得到空字符串 ""。最终将该字符串转换成数字,即 0。关于隐式转换的详细说明可参考另一篇文章:隐式类型转换详解

因此 [[]][+[]] 的计算结

全部评论 (0)

还没有任何评论哟~