1. $(function () {
function foo() { return true; }
log(bar()); // getting error
var bar = function() { return true; };
});
2. $(function () {
function foo() { return true; }
var bar = function() { return true; };
log(bar()); // Working
});
我在这里的困惑是下面两个声明之间有什么区别,哪一个是有用的?
var bar = function() { return true; };
function bar(){ return true; };
答案 0 :(得分:4)
在:
function bar(){ return true; };
是function declaration
,由翻译提升到顶部,你可以从任何地方打电话,同时:
var bar = function() { return true; };
function expression
您只能在 之后调用 。它在代码之前或之后都不可用,就像你正在做的那样:
log(bar()); // getting error
var bar = function() { return true; };
因为第一行bar
上的错误尚未提供。要解决此问题,请根据需要使用function declaration
。
要详细了解function declaration
和function expression
之间的区别,我强烈建议您阅读Kangax撰写的这篇精彩文章:
答案 1 :(得分:0)
Sarfraz已经得到了很好的解释。我只想添加更多,第一个函数,
var bar = function(){ return true; };
更加灵活,您可以在声明后添加更多属性或方法:
bar.anotherMethod = function() { alert("This is another method"); }
bar.anotherProperty = 'some value';
虽然function bar(){ return true; }
不能这样做。
`