有如下代码:
var name="World!"; (function(){ var name; if(typeof name=== 'undefined'){ name='Jack'; console.log('Goodbye'+name); } else{ console.log('hello'+name); } })();
请问执行后弹出的值是
var name="World!"; (function() { console.log(name) //world console.log(typeof name==="undefined") //flase if(typeof name==="undefined") { // var name="Jack"; console.log("Goodbye"+name); } else { console.log("Hello"+name); //hello world } })();
var name="World!"; (function() { console.log(name) //undefined console.log(typeof name==="undefined") //true if(typeof name==="undefined") { var name="Jack"; console.log("Goodbye"+name); //Goodbye Jack } else { console.log("Hello"+name); } })();
var name="World!"; (function(){ var name; if(typeof name=== 'undefined'){ name='Jack'; console.log('Goodbye'+name); } else{ console.log('hello'+name); } })(); // 立即执行函数没有函数提升,代码执行过程如下: var name; //立即执行函数没有函数提升,所以最前面是全局变量name的变量提升。 name="World!"; (function(){ //函数访问变量的时候会先从自己的作用域里找,找不到了才会去全局找。 var name; //函数自己的作用域里定义了name,只不过是没有赋值 if(typeof name=== 'undefined'){ //故进入这个条件 name='Jack'; console.log('Goodbye'+name); } else{ console.log('hello'+name); } })();