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

what is function scoped variables (var) and block scoped variables in es6?

我是javascipt的新手,因为我现在开始学习js,我对var很困惑,据说是函数作用域和块作用域;

如果是这样,那么我们如何在该函数之外访问它们!?可以说我想从另一个 class 使用它(我不知道可能是通过创建一些对象或其他什么)(我想我们不能在这里创建对象!因为它是一种基于函数式编程的语言我猜!:( )

var y = "global";

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

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

var 据说不是函数作用域。

var 声明的变量可以是函数或全局范围。

  • 如果声明发生在函数内,则变量为 仅限于该功能。
  • 如果声明发生在函数外部,则变量是 全局范围。

如果用 let or const, then it has block level scope. A block 声明的变量由 {} 分隔,或者如果这些符号不存在,则为封闭函数,或者如果不在块或函数中,则为全局。

更详细地讨论了作用域和作用域链,应该有助于回答您的编码方案。