Ade*_*ayo 4 javascript arrays undefined
我们钟爱的JavaScript可能很奇怪...
(![] + [])[+!+[] + +!+[]] // 'l'
+ (![] + [])[+!+[]] // 'a'
+ ([![]] + [][[]])[+!+[] + [+[]]] // 'i'
+ ([][[]] + [])[+!+[] + +!+[]] // 'd'
// Will output "laid"
Run Code Online (Sandbox Code Playgroud)
JavaScript产生此输出的原因主要取决于数组的类型转换和+将“事物”转换为字符串的能力。![] // false而+[] // 0我的问题是JavaScript如何成功解析[][[]]未定义但被拒绝[][][]为语法错误
[] 根据上下文的含义不同
Run Code Online (Sandbox Code Playgroud)[][[]]
第一个[]创建一个新数组(数组文字语法)。
然后that_array[[]]尝试从该数组读取属性(方括号属性访问器语法)。
属性名称是[](也是数组文字语法),它是一个数组,被转换为字符串:''
由于没有名为空字符串的属性,因此解析为undefined。
换一种说法:
const array = [];
const propertyName = [].toString();
console.log(array[propertyName]);
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[][][]
出现此错误的原因是,当第一个[]创建数组时,第二个[]尝试从中访问属性,但未包含属性名称的值。它]在值之前,因此第二个]是意外的。它永远不会到达第三位[]。
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |