有时,代码中有50k +行,因此应该对其进行优化以使其运行更快。在这里,我对功能有这样的疑问。我们知道两者之间的区别:
function f () {
//code here
}
和
var f = function () {
//code here
}
第一个在加载代码时立即声明,第二个在遍历代码的过程中声明。这意味着:
f();
var f = function () {
//code here
}
这将引发错误。 但是:
f();
function f () {
//code here
}
这可以正常工作。
我的问题是这个。这两个声明之间没有任何根本区别。它会影响代码行超过50k的大型项目的性能吗?
答案 0 :(得分:1)
实际上有一些区别http://jsben.ch/SqczP
具有基于变量的声明的分支表明性能提高了11%。
但是您问题的实际答案是:不,直到您决定以大循环声明函数时,它才会出现。即使这样,您也不必停止做这样的结构,而不必优化声明
答案 1 :(得分:0)
JavaScript中的函数声明被提升到封闭函数或全局范围的顶部。您可以在声明函数之前使用该函数:
在执行任何代码之前加载函数声明。
hoisted(); // logs "foo"
function hoisted() {
console.log('foo');
}
AND
请注意,函数表达式不会被悬挂(您不能在之前调用):
仅在解释器到达该行代码时加载函数表达式。
notHoisted(); // TypeError: notHoisted is not a function
var notHoisted = function () {
console.log('bar');
};
答案 2 :(得分:0)
f();
var f = function () {
//code here
}
这行不通,因为如果吊起了声明,但分配却没有,它实际上就是这样运行的
var f;
f();
f = function () {
//code here
}