它们之间有什么区别吗? 我一直在使用这两种方式,但不知道哪一种做什么,哪种更好?
function abc(){
// Code comes here.
}
abc = function (){
// Code comes here.
}
定义这些功能有什么区别吗?有点像i ++和++ i吗?
答案 0 :(得分:7)
function abc(){
// Code comes here.
}
将被悬挂。
abc = function (){
// Code comes here.
}
不会被吊起。
例如,如果您这样做:
abc();
function abc() { }
代码将在abc
被提升到封闭范围的顶部时运行。
如果你做了:
abc();
var abc = function() { }
abc
已声明,但没有值,因此无法使用。
哪个更好更多是对编程风格的争论。
http://www.sitepoint.com/back-to-basics-javascript-hoisting/
答案 1 :(得分:1)
简答:没有。
您将该函数放在全局命名空间中。任何人都可以访问它,任何人都可以覆盖它。
标准的更安全的方法是将所有内容包装在自调用函数中:
(function(){
// put some variables, flags, constants, whatever here.
var myVar = "one";
// make your functions somewhere here
var a = function(){
// Do some stuff here
// You can access your variables here, and they are somehow "private"
myVar = "two";
};
var b = function() {
alert('hi');
};
// You can make b public by doing this
return {
publicB: b
};
})();