Javascript 使用短路评估定义变量
为什么在使用短路评估定义变量时必须使用var关键字 这很有效Javascript 使用短路评估定义变量,javascript,scope,global-variables,short-circuiting,Javascript,Scope,Global Variables,Short Circuiting,为什么在使用短路评估定义变量时必须使用var关键字 这很有效 var sum=sum||5; console.log(sum); //shows 5; 这不管用 sum=sum||5; console.log(sum); //error sum is not defined; 第二个示例不应该只将sum==5设置为全局范围而不是局部范围吗?当您执行var sum=sum | 5这是: 变量sum已定义,已创建 变量sum分配了一个未定义的值 变量sum被分配sum | | 5的结果,这就像
var sum=sum||5;
console.log(sum); //shows 5;
这不管用
sum=sum||5;
console.log(sum); //error sum is not defined;
第二个示例不应该只将sum==5设置为全局范围而不是局部范围吗?当您执行
var sum=sum | 5代码>这是:
- 变量
sum
已定义,已创建
- 变量
sum
分配了一个未定义的值
- 变量
sum
被分配sum | | 5
的结果,这就像说undefined | | 5
,即5
当您只需执行sum=sum | | 5
时,上面的第一步和第二步不会发生,因此在第三步中,您短路了一些根本不存在的值5
,这就是为什么会出现该错误
为了更好地理解这一点,请这样做:打开浏览器控制台,只需编写sum
。您将得到一个错误,因为sum
不存在。现在,做sum='
。这里发生的事情是,定义/创建了一个变量sum
,,就好像你做了var sum
,它现在存在了,并且被赋予了值'
您应该理解,上述内容的实质是,将值未定义的
与值5
短路和将值5
不存在的东西短路是有区别的