<!DOCTYPE html>
function f() { console.log('I am outside!'); } (function () { if (false) { function f() { console.log('I am inside!'); } } f(); }());
代码如上,若在谷歌浏览器运行,提示报错不存在函数f,这是为什么呢?
<!DOCTYPE html>
代码如上,若在谷歌浏览器运行,提示报错不存在函数f,这是为什么呢?
这个不是es6 块级作用域,这里是变量作用域的范围
//作用域1
function f(){...};
//下面是一个立即执行的块级作用域2
(function(){
if(false){
//作用域2声明了f,所以f 为下面所示函数,但是由于if 跳过了,
// 没有执行,所以f 为undefined ,也就是在同级作用域下,只要有声明,不管是否执行,系统都会认为此变量在当前作用域已经存在
function f(){
console.log("inside");
}
}
f();
})();