Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么条件变量初始化需要;var";?_Javascript - Fatal编程技术网

Javascript 为什么条件变量初始化需要;var";?

Javascript 为什么条件变量初始化需要;var";?,javascript,Javascript,如果我删除“var”,浏览器(Chrome)会抱怨:“someVar未定义” 据我所知,只有当我没有初始化变量时,它才会抱怨 据我所知,只有当我没有初始化变量时,它才会抱怨 但是您正在尝试读取一个未声明的变量。给定 someVar = someVar || {}; 它首先计算someVar | |{},并在此过程中尝试获取someVar的值。由于someVar还不存在,因此会出现一个引用错误 下面是一个不会引发错误的示例: someVar = true || someVar; 因为|会计算第

如果我删除“var”,浏览器(Chrome)会抱怨:“someVar未定义”

据我所知,只有当我没有初始化变量时,它才会抱怨

据我所知,只有当我没有初始化变量时,它才会抱怨

但是您正在尝试读取一个未声明的变量。给定

someVar = someVar || {};
它首先计算
someVar | |{}
,并在此过程中尝试获取
someVar
的值。由于
someVar
还不存在,因此会出现一个引用错误

下面是一个不会引发错误的示例:

someVar = true || someVar;
因为
|
会计算第二个操作数,因此不会抛出错误

为什么它与
var
一起工作?

您可能认为使用
var
关键字不会有什么不同,因为
someVar | |{}
仍然是首先计算的。但是,由于,

var someVar = someVar || {};
实际评估为

var someVar;
someVar = someVar || {};
因此,在读取
someVar
时,它已经被声明了

据我所知,只有当我没有初始化变量时,它才会抱怨

但是您正在尝试读取一个未声明的变量。给定

someVar = someVar || {};
它首先计算
someVar | |{}
,并在此过程中尝试获取
someVar
的值。由于
someVar
还不存在,因此会出现一个引用错误

下面是一个不会引发错误的示例:

someVar = true || someVar;
因为
|
会计算第二个操作数,因此不会抛出错误

为什么它与
var
一起工作?

您可能认为使用
var
关键字不会有什么不同,因为
someVar | |{}
仍然是首先计算的。但是,由于,

var someVar = someVar || {};
实际评估为

var someVar;
someVar = someVar || {};

因此,在读取
someVar
的那一刻,它已经被声明了。

没有
var
。。。你没有初始化它。但如果我说“someVar=5;”,我就不需要“var”。这与初始化的条件性质有关吗?这是一个警告,而不是一个错误。正确吗?
a=5
不尝试读取
a
a=a | | 5
试图读取
a
,因此如果它不存在,就会抛出一个错误。@Paddy:它解释了已声明变量和未声明变量之间的差异。访问未声明的变量将引发引用错误。如果没有
var
。。。你没有初始化它。但如果我说“someVar=5;”,我就不需要“var”。这与初始化的条件性质有关吗?这是一个警告,而不是一个错误。正确吗?
a=5
不尝试读取
a
a=a | | 5
试图读取
a
,因此如果它不存在,就会抛出一个错误。@Paddy:它解释了已声明变量和未声明变量之间的差异。访问一个未声明的变量将抛出一个引用错误。因此,我对提升问题感到困惑,这个链接以更普通的方式讨论了这个概念:因此,我对提升问题感到困惑,这个链接以更普通的方式讨论了这个概念: