花括号内的 JS 变量定义

fab*_*uex 1 javascript

我正在查看一个旧的 javascript 文件,我注意到一个这样的函数:

function mainFunction() {

  var foo = new objFoo();

  foo.name = "fooname";
  foo.desc = "foodesc";

  // some instructions here

  {

    var bar = new objBar();

    bar.name = foo.name;
    bar.desc = foo.desc;

    // some other instructions here

  }

  return(foo);

}
Run Code Online (Sandbox Code Playgroud)

我的问题是:围绕bar对象定义的那些花括号的用途(如果有的话)是什么?

谢谢

Jam*_*ong 5

像 JavaScript 中那样的大括号定义了一个。如果使用或初始化变量,则它们用于包含范围,但由于您示例中的变量使用 初始化,因此它们实际上不执行任何操作(除非前一行中有像 an或letconstvarifwhile等)。

仅通过您提供给我们的代码,我认为这是开发人员对代码的错误解释或对 JavaScript 的误解。要使用var变量在 JavaScript 中包含作用域,您需要像这样编写闭包:

function mainFunction() {

  var foo = new objFoo();

  foo.name = "fooname";
  foo.desc = "foodesc";

  // some instructions here

  (function () {

    var bar = new objBar();

    bar.name = foo.name;
    bar.desc = foo.desc;

    // some other instructions here

  }());

  return(foo);

}
Run Code Online (Sandbox Code Playgroud)