function(),括弧裡的參數問題
我是寫程式新手,想請問一下帶參數的問題:
一般寫一個類似下面的function:
function calculate(aa){ var answer=1+aa; alert(answer); };
然後直接帶入參數呼叫這個函式:calculate(1); 就會執行1+1,
但是呢…
常常在看書或是看一些範例會有那種不帶入參數就會執行的函式,怎麼樣都看不懂…例如下面的jQuery程式:
$(function(){
$("*", document.body).click(function(e) {
e.stopPropagation();
var domEl = $(this).get(0).tagName;
$("span").text("滑鼠點了:" + domEl);
});
});
e自己就在程式裡呼叫自己然後使用stopPropagation()方法…這個語法到底是怎麼解釋??
或是像ActionScript3裡也有類似的東西,到底是那裡有帶入什麼東西到()裡??:
function LINKLINK(event:MouseEvent):void{
var myLINK:URLRequest = new URLRequest("http://www.flycan.com.tw/%22);
navigateToURL(myLINK);
}
MY_btn.addEventListener(MouseEvent.CLICK, LINKLINK);
還有看過一些更莫銘其妙的參數用法一時也找不到範例…
有沒有人願意詳細告訴我這個語法的問題,十分感謝。
2 個解答
- 1 0 年前最佳解答
example
$("*", document.body).click(function(){
alert(arguments.length)
})
alert = 1
代表jquery會自動傳一個變數到你給他的function裡阿,
只是你自己決定接不接
假設今天有一個方法
function aaa(x,y,z){
//arguments[0] == x
//arguments[1] == y
//arguments[2] == z
}
aaa(1,2,3)
arguments.length = 3
arguments[0] = 1
arguments[1] = 2
arguments[2] = 3
aaa()
arguments.length = 0
2011-01-08 00:27:29 補充:
如你的範例改成下面
$(function(){
$("*", document.body).click(function() {
e = arguments[0];
e.stopPropagation();
var domEl = $(this).get(0).tagName;
$("span").text("滑鼠點了:" + domEl);
});
});
是相同意思的
jquery在buind function時他就是有傳一個變數給你,只是你自己要不要用一個參數去接罷了
- 多餘的裝飾品Lv 51 0 年前
這是Javascript的基本範圍。
function的寫法及使用方法。
您所寫的function因為強調需要帶入參數,在呼叫的時候當然要給予參數,不然程式會因缺乏參數,所以運行的結果有可能錯誤或不如預期。
function calculate(aa){
var answer=1+aa;
alert(answer);
};
這個範例很明顯的告訴使用者,輸出的結果會視aa的值不同而有所差異。
倘若您的function 只是寫個簡單的內容,如:
function simple(){
alert("示範!");
};
呼叫時便僅需填寫simple() ,就會達到呼叫的目的了。
至於您另外示範的那個jQuery,因為整個程式運作需要知道使用者到底點擊了什麼物件,當然會需要參數。
參考資料: 自己