它们之间有什么区别吗?我一直在使用这两种方式,但不知道哪一种能做什么,哪种更好?
function abc(){
// Code comes here.
}
abc = function (){
// Code comes here.
}
定义这些函数有什么区别吗?像 i++ 和 ++i 这样的东西?
它们之间有什么区别吗?我一直在使用这两种方式,但不知道哪一种能做什么,哪种更好?
function abc(){
// Code comes here.
}
abc = function (){
// Code comes here.
}
定义这些函数有什么区别吗?像 i++ 和 ++i 这样的东西?
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/
简短的回答:没有。
您将函数放在全局命名空间中。任何人都可以访问它,任何人都可以覆盖它。
更安全的标准方法是将所有内容包装在自调用函数中:
(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
};
})();