在本教程中写道:
If you redeclare a JavaScript variable, it will not lose its value.
为什么要重新声明变量?在某些情况下是否实用?
谢谢
在本教程中写道:
If you redeclare a JavaScript variable, it will not lose its value.
为什么要重新声明变量?在某些情况下是否实用?
谢谢
这无非是提醒您,如果您这样做:
var x=5;
var x;
alert(x);
结果将是 5。
例如,如果您在某些其他语言中重新声明变量 - 结果将是未定义的,或 NaN,但不是在 javascript 中。
可以在Google Analytics 中找到重新声明变量的示例。当 Google Analytics 脚本启动 JavaScript 跟踪代码时,它_gaq
以这种方式声明或重新声明:
var _gaq = _gaq || [];
换句话说,如果_gaq
已经定义,_gaq
则“重新声明”为它自己。如果未定义,则首次声明为空数组。
这允许 Google Analytics 跟踪代码支持其他脚本,这些脚本可能需要在 Google Analytics 代码启动之前使用该变量。正如@xralf 指出的那样,JavaScript 允许这样做。
在无法知道变量是否已定义的情况下,重新声明变量很有用。
通过有条件地重新声明一个变量,就像 Google Analytics 跟踪代码所做的那样,它允许一个变量安全地来自多个地方。
在这个例子中,使用该_gaq
变量的其他代码同样检查预定义的_gaq
变量可能是安全的。如果它存在,它知道它可以使用它。如果它不存在,它知道应该在尝试使用它之前定义它。
为什么要重新声明变量?
你不应该。它使代码变得混乱。
在某些情况下是否实用?
不。
在 javascript 中没有块作用域,因此建议重新声明一个变量以进行澄清;这有助于编写更好的代码。
例如:
for (var x=0; x< 100; x++) { }
alert(x); //In most languages, x would be out of scope here.
//In javascript, x is still in scope.
//redeclaring a variable helps with clarification:
var x = "hello";
alert(x);
不会因为吊装而失去value
var x = 5;
var x;
// this is same as
var x; // undefined;
x = 5;
所以当你说“如果你重新声明一个 JavaScript 变量,它不会失去它的value。”
根据提升,所有声明都移到顶部。然后变量被赋值。
var x = 25;
var x; // redeclare first time
var x; // redeclare second time
// is same as
var x; // undefined
var x; // Not sure if this happens, but doesn't make a difference, it's still undefined
x = 25;
至于实用性,它有时会发生。看看@steveoliver 的回答。