函数声明在条件语句内虽然可以用,但是没有被标准化,也就是说不同的环境可能有不同的执行结果,所以这样情况下,最好使用函数表达式:
01
// 千万别这样做!
02
// 因为有的浏览器会返回first的这个function,而有的浏览器返回的却是第二个
03
04
if (true) {
05
function foo() {
06
return 'first';
07
}
08
}
09
else {
10
function foo() {
11
return 'second';
12
}
13
}
14
foo();
15
16
// 相反,这样情况,我们要用函数表达式
17
var foo;
18
if (true) {
19
foo = function() {
20
return 'first';
21
};
22
}
23
else {
24
foo = function() {
25
return 'second';
26
};
27
}
28
foo();