为什么在javascript中[,]是一个有效的数组文字
Why is [,] a valid array literal in javascript?
由于某些原因,
[,]
在javascript中是一个有效的数组文字。它是一个单元素数组。[,,]
也可以,等等。我正在查看语法,看看为什么会解析,但据我所知,不应该允许有空表达式。
有什么想法吗?
我似乎在看一个旧的语言规范。ECMAScript语言规范,5.1版(HTML版本(
将ArrayLiteral定义为:
ArrayLiteral :
[ Elision opt ]
[ ElementList ]
[ ElementList , Elisionopt ]
Elision :
,
Elision ,
Elision规则似乎定义了这种情况
在某种意义上,它允许数组元素"占位符"。
我在处理前导逗号时遇到了这个问题:
var x = [
, something
, somethingElse
, 2
]
我想知道为什么我得到了第一个元素的undefined
。
谢谢PointedEars和Derek朕會功夫
哇,这是一个非常好的问题。我以前从未注意到。
我制作了一把小提琴,进一步"利用"了这种现象:http://jsfiddle.net/xJnrK/
我认为这与javascript处理未定义变量的方式有关。Javascript对空变量使用"null"或"undefined"。我想这只是为了防止代码崩溃,不像Java那样,在Java中,必须给所有调用的变量一个值。
它变得更加疯狂,未定义不是一个保留词。您实际上可以使用覆盖它(在本地范围内(
function replicateMozilla()
{
var undefined = '2';
console.log(undefined);
}
replicateMozilla();
有关未定义的详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
相关文章:
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- 是什么让新的Date() / 1000成为一个有效的javascript
- 这是一个有效的JS代码吗
- 多个弹出窗口,但只有一个有效..为什么?
- Jquery - 相同的代码,但只有一个有效
- RxJS:如何在传递下一个有效值之前进行一些清理
- 这是一个有效的 XPath 查询吗?
- 在 JavaScript 中,数组如何引用到空字符串 + true 中是一个有效字符
- 两个相同的键控事件;只有一个有效
- JavaScript 方法一个有效,另一个无效
- 如何使用NightwatchJS从下拉列表中选择一个有效的随机值
- 将 Base64 编码的图像加密为另一个有效的 Base64 编码图像
- 使用 Javascript 构造一个有效的 JSON 对象
- 我有一个有效的 JSON,但我不断收到“语法错误 json.parse 第 1 行意外的数据结尾”
- 这是一个有效的递归函数吗
- 有人能告诉我为什么其中一个有效,另一个无效吗
- 在Rails助手中使用Javascript调用验证文本字段时,如何返回最后一个有效输入
- Undefined不是一个有效的uri或options对象.在expressjs
- 我如何检查一个字符串是否会使用JS使一个有效的html ID
- 函数从字符串创建一个有效的id.正则表达式