[英]Using “alert” and “confirm” as variable names
只要在var
声明它们,就可以安全地在函数体内使用它们。 如果不使用var声明它们,则将在全局(窗口)范围内覆盖它们,这可能会导致很多问题。
未列出它们,因为它们不是保留字。
alert
和confirm
是window
对象上的功能,该对象是浏览器中的全局作用域。 因为它是全局的,所以可以将其属性引用为裸词。
//Equivalent
window.alert('test');
alert('test');
您可以在函数内部安全地使用它们。 这样做将隐藏裸机,但是您仍然可以调用window.alert()
来访问它们。
是的,它们不是保留字。
在ECMAScript 5中, 保留字是:
break
, do
, instanceof
, typeof
, case
, else
, new
, var
, catch
, finally
, return
, void
, continue
, for
, switch
, while
, debugger
, function
, this
, with
, default
, if
, throw
, delete
, in
try
。 class
, enum
, extends
, super
, const
, export
, import
。 并且,在严格模式下, implements
, let
private
, public
, yield
, interface
, package
, protected
, static
。 null
true
, false
。 由于alert
和confirm
是标识符名称,而不是保留字,因此它们是标识符。 因此,它们可以安全地用作变量名。
var alert = 1, confirm = 2; document.body.innerHTML = alert + confirm; // 3
您可以覆盖这些功能,没有什么可以阻止您。
如果您有一个自定义对象或函数:
var obj = { alert: 1, confirm: 2};
function func(){
var alert = 1;
var prompt = 2;
}
这不是问题。
但是,如果您覆盖了实际alert
或confirm
了窗口对象上的功能,则如果包含依赖于该功能的库,则可能会遇到麻烦。
为了禁用烦人的alert()
框,这可能很有用。
它们不是保留字,因为它们是“全局”(“窗口”的属性)功能。 给它们分配值将导致它们失去在相同范围内的功能,例如:
alert = "sdfsdf";
...
alert("something");
将导致错误,例如“ TypeError:警报不是函数”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.