1
为什么在使用短路评估定义变量时必须使用var关键字?使用短路评估来定义变量
这工作...
var sum=sum||5;
console.log(sum); //shows 5;
这不工作...
sum=sum||5;
console.log(sum); //error sum is not defined;
不应该第二个例子只是使之和=== 5,但在全球范围内,而不是本地的?
为什么在使用短路评估定义变量时必须使用var关键字?使用短路评估来定义变量
这工作...
var sum=sum||5;
console.log(sum); //shows 5;
这不工作...
sum=sum||5;
console.log(sum); //error sum is not defined;
不应该第二个例子只是使之和=== 5,但在全球范围内,而不是本地的?
当你做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