函数中的变量范围

Ale*_*lin 2 javascript scope function

我有一个SCOPE问题.当我在函数外面声明"var text"时,一切正常.但是在函数内部它只在第一部分起作用.这就是我的意思:

这是一个缓冲功能.执行缓冲区("任何东西")保存"任何东西".执行buffer() - 没有属性将返回所有属性.

  • 缓冲液( "AL")
  • 缓冲液( "EX")
  • buffer()<=应该返回Alex

但是"文本"的范围是错误的,它不会返回保存的属性.

  function makeBuffer() {
    var text = "";
    if (arguments.length != 0) {
      for (let i = 0; i < arguments.length; i++) {
        console.log(`Adding argument - (${arguments[i]})`);
        text += arguments[i];
        console.log(`New text - (${text})`);
      }
    } else {
      console.log(`text - (${text})`);
      return text;
    }
  }
  var buffer = makeBuffer;


  buffer("One", "Two");
  document.write(buffer());
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 5

这是正常的行为.

当范围消失时,给定范围中定义的变量就会消失.每次调用函数都会创建一个新的范围.

在函数外声明变量是在它的调用之间共享值的标准方法.