Dan*_*ero 7 javascript function
正如所看到这里,有函数声明和函数表达式之间的一些差异。
函数表达式与函数声明相比有一个缺点,如果在声明之前对其进行调用,它将产生错误。
我只想知道使用函数表达式的好处,因为我似乎只看到上面刚刚提到的缺点。我可以举个例子...
函数表达式:
alert(foo()); // ERROR! foo wasn't loaded yet
var foo = function() { return 5; }
Run Code Online (Sandbox Code Playgroud)
函数声明:
alert(foo()); // Alerts 5. Declarations are loaded before any code can run.
function foo() { return 5; }
Run Code Online (Sandbox Code Playgroud)
除了这个非常好的答案之外,我能看到的唯一优点是动态更改函数调用。
例如这段代码:
function foo(){
console.log('foo');
}
function bar(){
console.log('bar');
}
var myFn = foo;
myFn();
setInterval(function(){
if(myFn === foo) myFn = bar;
else myFn = foo;
}, 5000);
setInterval(function(){
myFn()
}, 6000);
Run Code Online (Sandbox Code Playgroud)
自从您重新分配全局变量以来,它永远不会记录相同的内容,每个内部作用域函数都会更改,而此代码:
function foo(){
console.log('foo');
}
setInterval(function(){
function foo(){
console.log('Changed foo');
}
foo()
}, 5000)
setInterval(function(){
foo()
}, 5000)
Run Code Online (Sandbox Code Playgroud)
将记录 2 件不同的事情。您只能更改当前作用域函数,而不能更改全局函数。
归档时间: |
|
查看次数: |
2667 次 |
最近记录: |