Re: [問題] js的function
※ 引述《jjjkkkooo (接科噎歐)》之銘言:
: 大家好,在下正在學習js與jQuery,是新手,不過有寫過
: flash的AS與php,js的感覺很像flash以前的AS2,還算蠻好上手的
: 但一直有個東西不懂為什麼要這樣寫,像jQuery原始碼裡
: 以及其它範例常出現下面的語法:
: (function(){
: })();
: 一般function是這樣寫
: function(){
: }
: 外層又包了括弧實在不懂這到底是什麼函義,是否能指點一二?感激不盡!
做了點功課,讀了O'Reilly的書有點頭緒,嚐試來自問自答一下
還請板上先進指正!
關於下列語法:
(function(){
})();
先從一般的function分析起,是function必然可以被執行
若是非匿名則可以這樣呼叫:
function func(){
}
func();
而匿名的function則沒有function name,如下:
function(){
}
要如何執行此function?那就是將宣告的這function包起來
(function(){
})
就可以把上面語法當成是個拿得到的function而不只是宣告出來的function
把上面那一包當成是func,因此要執行func就是執行此匿名函式,因此
func();即
(function(){
})();
也就是板友推文提到立即執行此function
==============================================================
現在在下又衍生一些問題...就是即然是匿名的function
外部又是怎麼拿到像jQuery裡定義的變數像$, jQuery?
另外jQuery原始碼裡的
(function( window, undefined ) {
})();
window與undefined這二個參數倒底是指真正的window物件與undefined
或只是function裡頭的變數名稱而已?
還請各位先進解惑,感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.163.199
→
12/20 13:07, , 1F
12/20 13:07, 1F
→
12/20 13:08, , 2F
12/20 13:08, 2F
推
12/20 13:19, , 3F
12/20 13:19, 3F
→
12/20 13:19, , 4F
12/20 13:19, 4F
→
12/20 13:20, , 5F
12/20 13:20, 5F
→
12/20 13:21, , 6F
12/20 13:21, 6F
推
12/20 18:56, , 7F
12/20 18:56, 7F
已修正,感謝指教!!
推
12/20 19:00, , 8F
12/20 19:00, 8F
→
12/20 19:00, , 9F
12/20 19:00, 9F
※ 編輯: jjjkkkooo 來自: 114.41.163.199 (12/20 19:04)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
問題
0
12