一丝一竹

导航

 
//1
var name='world';
(function(){
if(typeof name==='undefined'){
var name='jack';
console.log('Goodbye'+name);
}else{
console.log('Hello'+name);
}
})();//输出Goodbyejack

//2当把var去掉后:
var name='world';
(function(){
if(typeof name==='undefined'){
name='jack';
console.log('Goodbye'+name);
}else{
console.log('Hello'+name);
}
})();//输出Helloworld


总结:当作用域中有该变量时,会将变量提至函数最前面,但赋值会留在原地,所以当window在function的第一行检测到为undefined的name,故而第一个输出为Goodbyejack;
第二个因为刚开始未检测到有name在函数内部声明,所以window直接去全局里找到world这个name,所以就使用了有值的name,最后输出Helloworld.
posted on 2017-12-25 18:09  一丝一竹  阅读(257)  评论(0编辑  收藏  举报