如果我不担心会污染全局范围并且调用函数 b() 的唯一位置是函数 a(),那么就性能而言,以下哪一项是更好的解决方案?
var v;
function a()
{
function b()
{
v*=v;
}
v=5;
b();
}
a();
或者
var v;
function a()
{
v=5;
b();
}
function b()
{
v*=v;
}
a();
如果我不担心会污染全局范围并且调用函数 b() 的唯一位置是函数 a(),那么就性能而言,以下哪一项是更好的解决方案?
var v;
function a()
{
function b()
{
v*=v;
}
v=5;
b();
}
a();
或者
var v;
function a()
{
v=5;
b();
}
function b()
{
v*=v;
}
a();
当你使用一个符号时,它的相关值会在环境链中寻找,从内部开始向外移动。这意味着首先找到内部(本地)环境而不是全局环境,但在性能上没有真正的差异。
要选择采用哪种解决方案,只需问问自己:
如果不,
三年后看我的问题,我希望提供一个更令人满意的答案。
如果内部函数将在其他地方使用,请不要嵌套它。出于显而易见的原因。
function a(){
// ...
}
function b(){
// ...
a();
}
a();
b();
如果内部函数不会在其他地方使用,则嵌套它。它看起来更干净,并增加了外部函数的逻辑完整性(相关内容被视觉封闭)。
function b(){
function a(){
// ...
}
// ...
a();
}
b();
如果内部函数不会在其他地方使用并且外部函数将被多次调用,则对其进行闭包并在封闭范围内定义内部函数。 这样它就不会在每次调用时重新定义。当内部函数很复杂和/或外部函数被多次调用时,这更有意义。
var b = (function b(){
function a(){
// ...
}
return function(){
// ...
a();
};
}());
b();
b();
其他性能影响可以忽略不计。