Javascript Java脚本中函数和命名函数表达式的代码性能及差异
有时,代码中有50k+行,应该对它们进行优化以使其工作更快。这里我有一个关于函数的问题。我们知道这两者之间的区别:Javascript Java脚本中函数和命名函数表达式的代码性能及差异,javascript,performance,function,syntax,Javascript,Performance,Function,Syntax,有时,代码中有50k+行,应该对它们进行优化以使其工作更快。这里我有一个关于函数的问题。我们知道这两者之间的区别: function f () { //code here } 及 第一个是在加载代码时立即声明的,第二个是在遍历代码的过程中声明的。这意味着: f(); var f = function () { //code here } 这将抛出一个错误。 然而: 这很好用 我的问题是。这两种声明之间有什么根本区别吗。它会影响代码行数超过50k的大型项目的性能吗 实际上有一些区别 具
function f () {
//code here
}
及
第一个是在加载代码时立即声明的,第二个是在遍历代码的过程中声明的。这意味着:
f();
var f = function () {
//code here
}
这将抛出一个错误。
然而:
这很好用
我的问题是。这两种声明之间有什么根本区别吗。它会影响代码行数超过50k的大型项目的性能吗 实际上有一些区别 具有基于变量声明的分支的性能提高了11%
但您的问题的实际答案是:不,直到您决定在大循环中声明函数,它才会出现。即使这样,您也必须停止使用这种结构而不是优化声明,JavaScript中的函数声明被提升到封闭函数或全局范围的顶部。您可以在声明函数之前使用它: 在执行任何代码之前加载函数声明
highed();//日志“foo”
功能提升(){
console.log('foo');
}
及
请注意,函数表达式未被提升(之前不能调用):
函数表达式仅在解释器到达该代码行时加载
notoisted();//类型错误:NOTHOITED不是一个函数
var notHoisted=函数(){
console.log('bar');
};代码>
这将不起作用,因为如果声明被挂起,但分配没有被挂起,它实际上是这样运行的
var f;
f();
f = function () {
//code here
}
这不是Stackoverflow的真正问题-你可以做一些匹配,并在类似的东西上测试自己,你可以通过简单的谷歌搜索找到。简单的谷歌搜索确实会回答这个问题,即使如此:。对于真正深入的研究:那么你的意思是声明不影响任何性能?就像任何变量一样,函数表达式只会在需要时执行。@KoboldMines相反,我确信如果它影响性能,你需要重构所有代码,而不仅仅是声明本身
f();
function f () {
//code here
}
f();
var f = function () {
//code here
}
var f;
f();
f = function () {
//code here
}