所谓的闭包应该意味着内部函数读取当前函数以外的变量,即它创建的上下文。

复制代码代码如下所示:

函数hello(){

,;

函数打印(){

console.log(char);

};

返回打印();

}



需要注意的是,这里的打印函数指的是外部hello函数的char变量,所以我们可以返回一个

复制代码代码如下所示:

你好,世界



这一功能,在某种意义上,应该归功于活动的范围。当然,我们不必焦直接访问除非我们犯了一个错误,当我们宣布variable.as

复制代码代码如下所示:

函数hello(){

char你好,世界;

函数打印(){

console.log(char);

};

返回打印();

}



只因为var丢失了。

复制代码代码如下所示:

在这里,hello变成了一个壁橱。闭包是一种特殊的对象。它由两部分组成:函数和创建函数的环境。



javscript关闭这

重要的是要注意,当阅读这个和论点时,这可能是个问题。

复制代码代码如下所示:

函数hello(){

this.char =你好,世界;

函数输出(){

我不是你好世界;

console.log(这个字符);

};

返回输出();

}



当然,这个例子还不够。因此,我们需要一个额外的例子来解释这个问题。下面是Javascript高级编程的一个例子来说明这个问题。

复制代码代码如下所示:

窗口;

var对象{ { {

名称:我的对象

GetNameFunc:函数(){

返回函数(){

返回this.name;

}

}

};

Object.getNameFunc()()()



但是这个用法确实是,而且解决方案是保存一个临时变量,正如前面一篇文章中提到的Javascript的知识一样。

复制代码代码如下所示:

窗口;

var对象{ { {

名称:我的对象

GetNameFunc:函数(){

var =;

返回函数(){

返回that.name;

}

}

};

Object.getNameFunc()()()



javscript关闭和读写变量

值得注意的是,如果我们不很好地处理变量,我们也可以修改这些变量。

复制代码代码如下所示:

函数hello(){

,;

返回{

设置:函数(字符串){

返回字符串;

},

打印:函数(){

console.log(char)

}

}

}

var = hello();

say.set(新你好,世界)

say.print(Hello World) / /新



Javascript闭包和性能

引用MDC

复制代码代码如下所示:

如果某些特殊任务不需要关闭,那么在没有必要的情况下在其他函数中创建函数是不明智的,因为闭包对脚本性能有负面影响,包括处理速度和内存消耗。



文章还说。

复制代码代码如下所示:

例如,创建新的类或对象的方法时,通常要与对象相关的原型,而不是在对象的构造函数。原因是,这将导致每个构造函数被调用,和方法将被重新分配一次(即每个对象被创建)。