为什么在使用短路评估定义变量时必须使用var关键字?
这有效......
var sum=sum||5;
console.log(sum); //shows 5;
这不起作用......
sum=sum||5;
console.log(sum); //error sum is not defined;
不应该是第二个例子只是使得= = 5但是在全球范围而不是本地吗?
答案 0 :(得分:1)
执行var sum=sum||5;
时内部发生的是:
sum
已定义,已创建sum
被分配了undefined
值sum
被分配了sum || 5
的结果,就像说undefined || 5
,5
当您只是执行sum = sum||5
时,上面的第一步和第二步不会发生,所以在第三步中,您将使用值将所有不存在的内容短路 5
,这就是您收到错误的原因。
为了更好地理解这一点,请执行以下操作:打开浏览器的控制台,然后编写sum
。您将收到错误,因为sum
不存在。现在,做sum = ''
。这里发生的事情是定义/创建了一个变量sum
,就好像你已经完成了var sum
,它现在已经存在,并且它被赋值''
您应该了解的上述内容是将值undefined
与值5
和短路的区别将价值为5