gpt4 book ai didi

javascript - JavaScript 中的变量作用域

转载 作者:行者123 更新时间:2023-11-29 20:10:20 25 4
gpt4 key购买 nike

小问题:

假设我们包含了 jQuery。这个函数会执行得更快吗...

var example1 = (function($, jQuery) {
return function() {
// do something
}
})()

...比下面的:

var example2 = (function() {
return function() {
// do something
}
})()

?

在第一个中,jQuery 对象将是 undefined,在第二个中,它将被继承。那么第二个应该更贵?

提高速度和摆脱降低性能的继承变量的最佳方法是什么?

jsPerf 测试:http://jsperf.com/objinheritance

最佳答案

正如 ECMAScript 定义的那样,引用解析 是一个由内到外的查找过程,因此在第一个示例中,$ 变量是1 步 从您的代码中,在第二个示例中,虽然 $ 驻留在全局范围内,但它至少相距 2 步,这会导致额外的查找开销。

然而,在现实世界中,现代 javascript 引擎(例如 V8)并没有像 ECMAScript 声明的那样实现引用解析,它们有一种扁平化作用域链的方法,在其他情况下换句话说,对于大多数代码,所有变量都可以在一步中被引用,完全没有查找开销

结论:他们真的是一样的。

PS: 和scope chain一样,javascript引擎对prototype chain也做了同样的优化,所以也不用担心属性查找的开销.

关于javascript - JavaScript 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277234/

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