function f() {
console.log ('I am outside !');
}
(function() {
if (false) {
function f() {
console. log ('I am inside !');
}
}
f()
})()
//es5环境 会这样解析执行 函数声明提升
function f() { console.log ('I am outside !'); }
(function () {
function f() { console.log ('I am inside !'); }
if (false) {
}
f() ;
})();
//es6环境下,在浏览器的 es6 环境中 ,块级作用域内声明函数的行为类似于 var 声明
function f() { console.log ('I am outside !'); }
(function () {
var f;
if (false) {
// var f = function() {console.log('I am inside')} es6类似这样声明 会提升f
function f() { console.log ('I am inside !'); }
}
f() ;
})();
// 考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也
// 应该写成函数表达式的形式,而不是函数声明语句。
{
let a = 'sec';
let f1 = function() {
return a;
}
console.log(f1())
}
console