標籤:style blog http color io ar 使用 java for
在JS中函數在使用時實質上和我們平時學習的程式設計語言中的函數類似,它相同也具有函數名,參數,返回值,函數體等這些尋常函數所具有的內容。可是作為一種指令碼語言,它確實也有自己不一樣的地方。
一、建立
<span style="font-size:18px;">function box(){ //利用functionkeyword進行聲明+函數名+(可加入參數)+{詳細運行內容,可包含傳回值} return 'hello!';}</span>
在這裡,我們須要知道的是,box後面的()具有運行該函數的功能,同一時候可用來進行傳參。
假設我們在JS中直接調用alert(box),那麼結果會顯示範範例如以:由於沒有加(),所以它沒有運行。僅僅有在加了()後,才會正常顯示‘hello!‘ (這裡匿名函數中會用到)
二、函數傳參
JS函數中用到一個arguments對象,能夠實現動態傳參,使得函數在傳參時,並不介意有多少參數!
1、arguments對象簡單使用
function box(){ //這裡並沒有傳遞參數return arguments[0]+arguments[1]+arguments[2];//這裡代表第幾個參數}alert(box('大家','國慶節','快樂!'));
能夠看出來,arguments對象相當於一個對象數組,它將函數中傳進來的參數放在了一個數組中,按順序進行調用。
假設調用它的長度,會發現:長度為3,即參數的個數。
function box(){return arguments.length;}可是出現了一個問題,這裡並沒有實現動態傳參啊,僅僅是參數一一相應而已,沒錯,事實上,arguments對象僅僅能識別它自己事先定義好的個數的參數,假設外界傳進來的參數不足,那麼自己主動以undefined取代,假設傳進來參數超出本身所定義的個數,那麼,他會將多餘的自己主動抹去,不會顯示!
那麼怎樣才幹實現動態傳參呢?讓上面的函數能夠傳進而且識別全部我想傳進的參數,比方在實現加法時,並不知道使用者相加的數位個數有多少的時候,該怎麼解決呢?這裡用到了一個簡單迴圈來實現。
2、利用arguments對象實現動態傳參:
function box() { var sum = 0; if (arguments.length == 0) return sum; for(var i=0;i<arguments.length;i++) { sum += arguments[i]; } return sum; }這樣,我們假設調用函數alert(box(3,4,5,6,7,8,9)),不管加多少都能夠得到想要的答案了。在這裡須要注意的是,假設存在string格式的那麼數字也會被當成字串來處理,這時候‘+’會被當成&連字號來處理。
三、匿名函數
JS中函數還支援無名英雄,在聲明函數時,沒有函數名稱的函數稱為匿名函數(跟匿名信一個道理)。
function (){return 'hello!';}
但是沒有函數名的函數怎樣來調用呢?
匿名函數的運行方法:
1、通過賦給變數進行調用
var box=function(){return 'lee';}alert(box());
2、自我運行
在建立時,提到了()代表運行,在匿名函數中也是一樣。
(function(){ alert( 'lee');})()
<span style="font-size:18px;">//文法:(匿名函數)()第一個圓括弧放匿名函數,第二個圓括弧運行</span>
這裡的()使得頁面在載入時,就能夠直接運行JS中的匿名函數。不再須要賦值。
3、匿名函數進行傳參
這裡也是用到了()這個小知識,第二個()代表運行,同一時候他還能夠進行傳參,所以,我們還能夠為匿名函數進行傳參。
比如:
(function(age){alert(age); }(100)) 事實上,這裡跟我們平時的函數原理是一樣的。能夠把前面整個匿名函數當成一個函數名,後面小括弧進行傳參和運行。這裡的100能夠用其它的運算式來取代,如頁面中擷取了某些運算式的值等。
以上是關於JS學習中函數的一些基礎知識,須要把握住原有知識和如今所學內容之間的同樣點和不同點,認真總結和重複理解,才幹終於得以應用。關於匿名函數的使用還有非常多的應用,將在興許繼續總結!
JS基礎——函數的建立和使用