重新声明JavaScript变量

在本教程中写的是:

If you redeclare a JavaScript variable, it will not lose its value.

我为什么要重新声明一个变量? 它是在某些情况下实用?

谢谢

--------------解决方案-------------

这无非就是一个提醒,如果你这样做:

var x=5;
var x;
alert(x);

结果将是5。

在其他语言,例如如果重新声明变量 - 结果将在JavaScript是不确定的,或NaN,但不是。

重新声明变量的一个例子可以在谷歌分析找到。 当跟踪的JavaScript代码是由谷歌Analytics(分析)脚本发起的,它声明或redeclares _gaq是这样的:

var _gaq = _gaq || [];

换句话说,如果_gaq已经定义, _gaq被“重新声明”作为本身。 如果没有定义,这将被宣布为第一次作为一个空数组。

这使得谷歌Analytics跟踪代码以支持可能需要使用可变谷歌分析代码启动之前其他脚本。 由于@xralf指出,JavaScript允许这一点。

重新声明的变量是在如果变量已被定义它不能被公知的情况下是有用的。

通过有条件地重新声明一个变量,如谷歌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);

一般情况下,它可以被认为是不好的风格有var等语句后分配由于悬挂的问题(见这里)。 使用“单VAR模式”(见这里),重声明只可能发生像史蒂夫奥利弗的谷歌Analytics(分析)的例子。 我重构上面的例子:

var x, max = 100; // no further var declarations afterwards!

for (x = 0; x < max; x++) { }

alert(x);

// redeclaration 'var x = "hello"' doesn't make any sense here
// and would be complained about by JSLint/-Hint
x = 'hello';
alert(x);

一重声明可以使用默认值时,可选参数(这是谷歌分析的例子是关于什么的,我猜想)有意义但是:

function abc(param1) {
var param1 = param1 || 'default value';
}

分类:JavaScript的 时间:2015-03-14 人气:0
本文关键词: JavaScript中,变量声明
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.080 (s). 10 q(s)