如果未声明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.
编辑:您需要使用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 已经被声明及其有效变量。