我忘记了在 JavaScript 中初始化二维数组的逗号,令我惊讶的是,它编译了。例如:
amIMissingSomething = [
[1, 2, 3]
[4, 5, 6],
[7, 8, 9]
]
console.log(amIMissingSomething) // [undefined, [7, 8, 9]]Run Code Online (Sandbox Code Playgroud)
我预计会发生语法错误。然而,经过很长一段时间,我了解到这是有效的 javascript 并且计算结果为:[undefined, [7, 8, 9]]。这里发生了什么?
它被解析为:
amIMissingSomething = [
[1,2,3][4,5,6],
[7,8,9]
]
Run Code Online (Sandbox Code Playgroud)
逗号运算符返回最后一个表达式,因此基本上:
amIMissingSomething = [
[1,2,3][6],
[7,8,9]
]
Run Code Online (Sandbox Code Playgroud)
由于第一个数组没有 7 个元素,因此其计算结果为undefined
它被解释为array[index]
请参阅属性访问器
const a = [1, 2, 3][0]
console.log(a)Run Code Online (Sandbox Code Playgroud)
表达式的结果4, 5, 6是6,参见逗号运算符
const arrayChangeHandler = {
get: function(target, property) {
console.log('getting ' + property + ' for ' + target);
return target[property];
},
};
const originalArray = [1, 2, 3];
const proxyToArray = new Proxy( originalArray, arrayChangeHandler );
proxyToArray[4, 5, 6]Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |