ES6中的函数作用域变量(var)和块级作用域变量是什么?

4

我现在开始学习JavaScript,对于被称为函数作用域和块作用域的var非常困惑;

如果是这样的话,我们如何在该函数之外访问它们呢?!假设我想从另一个类中使用它(我不知道也许通过创建一些对象或其他方式)(我猜在这里我们不能创建对象!因为它是基于函数式编程语言!:()

var y = "global";

if (y === "global") {
  var y = "block-scoped";
  console.log(y); // expected output: block-scoped
}

console.log(y); // expected output: block-scoped

代码记录的结果与您预期的一样。 - Maheer Ali
是的,但我还有一些其他的疑问,现在已经解决了! - Imran S M
1个回答

4

var 不被认为是函数作用域。

使用 var 声明的变量可以是函数作用域或全局作用域。

  • 如果声明在函数内部,则变量的作用域限定在该函数内。
  • 如果声明在函数外部,则变量的作用域是全局的。

如果使用 letconst 声明变量,则具有块级作用域。一个块{} 定界,如果没有这些符号,则由封闭的函数或者如果不在块或函数中,则为全局作用域。

我写了另一篇文章,更详细地讨论了作用域和作用域链,应该有助于回答你的编程场景。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接