使用短路评估来定义变量



为什么在使用短路计算定义变量时必须使用 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被分配一个undefined
  • 变量sum被赋sum || 5的结果,这就像说undefined || 5,这是5

当您简单地执行sum = sum||5上面的第一步和第二步不会发生时,因此在第三步中,您将根本不存在的东西短路,值为 5 ,这就是您出现该错误的原因。

为了更好地理解这一点,请执行以下操作:打开浏览器的控制台并简单地编写sum。您将收到一个错误,因为sum不存在。现在,做sum = ''.这里发生的事情是定义/创建了一个变量sum就好像你已经做了var sum一样,它现在存在,并且它被分配了值 ''

您应该了解上述内容的本质是,将价值undefined与价值5短路与将不存在的东西短路与具有价值5

相关内容

  • 没有找到相关文章

最新更新