gpt4 book ai didi

javascript - 是否重新编译了 javascript 中的闭包

转载 作者:可可西里 更新时间:2023-11-01 01:25:09 31 4
gpt4 key购买 nike

假设我们有这段代码(暂时忘掉原型(prototype)):

function A(){
var foo = 1;
this.method = function(){
return foo;
}
}
var a = new A();

每次运行函数A时,内部函数是否都重新编译?或者这样做更好(以及为什么):

function method = function(){ return this.foo; }
function A(){
this.foo = 1;
this.method = method;
}
var a = new A();

或者 javascript 引擎是否足够聪明,不会每次都创建一个新的“方法”函数?特别是 Google 的 v8 和 node.js。

此外,欢迎就何时使用哪种技术提出任何一般性建议。在我的具体示例中,使用第一个示例确实适合我,但我知道外部函数将被实例化多次。

最佳答案

据我了解,与其说是“编译”函数的问题,不如说它在每次执行时都有不同的“作用域”。

您使用的第二种方法将始终具有来自同一范围的方法

第一个方法将 method 放在 A() 函数调用的范围内。因此,该范围内的任何信息(var foo、函数参数等)都存储在函数范围的那个实例中。因此,每次都会引用相同的功能代码,但它会在不同的范围内(因此是不同的“对象”)。

关于javascript - 是否重新编译了 javascript 中的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806324/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com