if(condition){
function sayHi(){
console.log('Hi!');
}
}else{
function sayHi(){
console.log('Yo!');
}
}
let sayHi;
if(condition){
sayHi =function(){
console.log('Hi!');
}
}else{
sayHi = function(){
console.log('Yo!');
}
}
- 上述是函数申明的写法,但是在ECMAScript中,这并不是有效的语法,JavaScript引擎会尝试将其纠正为适当的申明。
浏览器纠正这个问题的方式并不一致,多数浏览器会忽略condition直接返回第二个申明,FireFox会在condition为true的时候返回第一个申明。将上面的写法换成函数表达式就没有问题了。