我正在查看一个旧的 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对象定义的那些花括号的用途(如果有的话)是什么?
谢谢
像 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)