标签:全局 back 原因 color res 声明 media 优先 turn
var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; number=number*2; var number=3; return function() { this.number *= 2; number*=3; alert(number); } } )(), db2:function(){this.number*=2} }; var fn1 = obj.fn1; alert(number);//问这会会弹出什么结果 4 fn1();//这会弹出什么结果 9 obj.fn1();//这次弹出什么结果 27 alert(window.number); //这会window.number的结果是什么 8 alert(obj.number); //这会obj.number的结果是什么 8
这是我无意间看到的一道js题,当时理解了好久,不过总算明白了,下面附上自己的解析。
一、编译阶段
var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; number=number*2; var number=3; return function() { this.number *= 2; number*=3; alert(number); } } )(), db2:function(){this.number*=2} };
var number = 2; var obj = { number : 4, fn1 : ( function() { this.number *= 2; alert(this); //window number=number*2; alert(number); //NAN 原因:变量声明提前 var number=3; alert("执行"); return function() { this.number *= 2; number*=3; //alert(number); } } )(), db2:function(){this.number*=2} };
var fn1 = obj.fn1; alert(number);//问这会会弹出什么结果 4 fn1();//这会弹出什么结果 9 obj.fn1();//这次弹出什么结果 27 alert(window.number); //这会window.number的结果是什么 8 alert(obj.number); //这会obj.number的结果是什么 8
标签:全局 back 原因 color res 声明 media 优先 turn
原文地址:http://www.cnblogs.com/waterserver/p/6668226.html