繁体   English   中英

为什么条件变量初始化需要“ var”?

[英]Why does a conditional variable initialization need “var”?

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

var someVar = someVar || {};

据我所知,仅当我不初始化变量时,它才应该抱怨。

据我所知,仅当我不初始化变量时,它才应该抱怨。

但是,您正在尝试读取未声明的变量。 特定

someVar = someVar || {};

它首先评估someVar || {} someVar || {}并尝试在此过程中获取someVar的值。 由于someVar不存在(尚未),您将获得参考错误。

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

someVar = true || someVar;

因为|| 进行衬衫循环评估,因此永远不会评估第二个操作数,因此不会引发任何错误。

那为什么它可以和var一起使用呢?

您可能会认为使用var关键字没有什么区别,因为someVar || {} someVar || {}仍将首先评估。 但是,由于吊装 ,该声明

var someVar = someVar || {};

实际上被评估为

var someVar;
someVar = someVar || {};

因此,当读取someVar ,它已经被声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM