課程
/前端開發
/JavaScript
/JavaScript深入淺出
請問 當 var func=outer(); 時func變量 的值為30嗎。
感覺func()是再一次調用outer()函數的感覺,那 localVal變量就重新初始化了呀,怎么就與左邊的不同?
2015-05-29
源自:JavaScript深入淺出 7-1
正在回答
func不是數字,注意func是一個函數對象,調用之后才返回了30的結果。
outer函數的返回值為 一個函數,所以func等于一個函數!
右邊 這個函數 從下 往上看
var?func?=?outer();
這里 func 復制為 函數 outer的執行結果,那在往上看,函數 outer 執行后的 結果是什么呢
function?outer(){ ????var?localVal?=?30; ????return?function(){ ???????return?localVal; ????} }
一個函數的的結果 如果沒有返回值的話 默認是 'undefined',如果有返回值的話 就是返回 return 后面語句的執行結果。所以outer() 應該返回以下結果
function(){ ????return?localVal; }
可以通過命令行工具 來驗證 輸入 func 返回的就是這個了
然后我們看到 返回的結果是一個匿名函數(沒有名字的函數)。好了 這個函數運行后返回的是 localVal 這個值??梢岳斫鉃?是從他的'父函數'那里得到的。那么為什么可以獲得 '父函數'里的變量呢,這就牽扯到閉包了,閉包這個課程里說的有,可以再仔細看看或者查閱一下資料
搖擺企鵝
右邊:
????func=function(){
????????return localVal;
}
這是一種常見的閉包寫法
舉報
由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握
8 回答個人感到js好難學。有什么好方法嗎?
1 回答有人有這個代碼風格的插件嗎 麻煩發我一份啊 覺得特炫酷啊 謝謝了 [email protected]
2 回答怎么都沒人了
2 回答writable與configurable都有屬性是否能修改的意思嗎
3 回答不能直接object.prototype.tostring(this);嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-06-05
func不是數字,注意func是一個函數對象,調用之后才返回了30的結果。
2016-04-27
outer函數的返回值為 一個函數,所以func等于一個函數!
2015-05-29
右邊 這個函數 從下 往上看
這里 func 復制為 函數 outer的執行結果,那在往上看,函數 outer 執行后的 結果是什么呢
一個函數的的結果 如果沒有返回值的話 默認是 'undefined',如果有返回值的話 就是返回 return 后面語句的執行結果。所以outer() 應該返回以下結果
可以通過命令行工具 來驗證 輸入 func 返回的就是這個了
然后我們看到 返回的結果是一個匿名函數(沒有名字的函數)。好了 這個函數運行后返回的是 localVal 這個值??梢岳斫鉃?是從他的'父函數'那里得到的。那么為什么可以獲得 '父函數'里的變量呢,這就牽扯到閉包了,閉包這個課程里說的有,可以再仔細看看或者查閱一下資料
2015-05-29
右邊:
????func=function(){
????????return localVal;
}
這是一種常見的閉包寫法