为什么JavaScript声明"ga = ga || []"有效?

Mor*_*eng 7 javascript syntax

如果未声明ga,则javascript语句下方将导致错误.

if (ga)
{
   alert(ga);
}
Run Code Online (Sandbox Code Playgroud)

错误是:

ga is not defined
Run Code Online (Sandbox Code Playgroud)

看起来未声明的变量在bool表达式中无法识别.那么,为什么以下声明有效?

var ga = ga || [];
Run Code Online (Sandbox Code Playgroud)

对我来说,ga在"||"之前被视为bool值.如果是假,则在"||"之后表达 被分配到最终的ga.

YOU*_*YOU 3

编辑:您需要使用var ga;第一个或var ga = ga || [];,因为它首先声明 ga 并为其赋值。

你可以试试这个

var x = 1, y = x + 1;
alert([x,y]) // 1,2
Run Code Online (Sandbox Code Playgroud)

您可能会注意到,当 y 被声明时,x 已经被声明并且已经为其赋值 1。

因此,在您的情况下,当ga || []分配时, ga 已经被声明及其有效变量。

  • 是的,因为,当你使用 `var` 时,它首先声明,然后赋值。 (2认同)