亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道關于Javascript變量作用域的面試題

一道關于Javascript變量作用域的面試題

慕森卡 2018-08-01 17:19:39
 var a = 100;     (function(){         console.log(a);         var a = 10;     })();輸出的結果為何是undefined, 如何修改結果輸出100?
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

這段代碼其實是這樣

var a = 100;
(function(){
    var a;
    console.log(a);
    a = 10;
})();

所以console.log(a)的時候JS引擎找到了作用域中的變量a,但是其值是undefined

至于你想要讓它輸出100,那方法就多了去了,我提供個自己的

var a = 100;(function(num){
    var a = num;
    console.log(a);})(a);

把外部作用域的a的值通過參數傳入函數中,然后打印出來。這其實挺有用的。

另外說一下上面同學的第二個例子,這個例子其實不太好,因為有點混淆了。

首先if,for之類的操作符不會創建一個私有的作用域

if (true) {    var b = 1000;
}console.log(b);//1000,在外部也可以調用,實際上就是在全局的聲明

然后上面這個例子

var a = 100;if(true){    console.log(a);    var a = 10;
}

其實就是

var a = 100;console.log(a);var a = 10;

感覺容易搞混。


查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 994 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號