【发布时间】:2011-12-31 19:39:00
【问题描述】:
undefined 在技术上可以重新定义,因此它不是保留字。因此,我通常在匿名函数中编写代码,强制 undefined 成为未定义变量,如下所示:
(function (undefined) {
"use strict";
var o = {
test: "testvalue"
};
if (o.test === undefined) {
// Do stuff here
} else {
// Do other stuff there
}
}());
但是,JSLint 提到了以下错误:
Problem at line 1 character 15: Expected an identifier and instead saw 'undefined' (a reserved word).
当代码可以任意重新定义变量时,为什么 JSLint 抱怨 undefined 是保留字?我知道你可以使用typeof x === "undefined";我只是想看看为什么这种方法行不通。
【问题讨论】:
-
“为什么 JSLint 抱怨 undefined 是保留字” 因为它是保留字!
-
@epascarello - 您能否提供一个列出保留字的 JavaScript/ECMAScript 参考的链接?我认为
undefined不在列表中,当然上面的代码也有效。您也可以只说undefined = "not undefined any more",它会起作用。 -
@nnnnnn @epascarello 根据Mozilla docs,
undefined不是保留字。 -
这段代码实际上并没有重新定义
undefined,它只是将 undefined 作为参数传递给闭包。你可能想要var undefined='something else';。
标签: javascript jslint reserved-words