我希望能夠看到綁定事件時可用的回調函數內部的值。如果在綁定,則函數內部的事件函數定義我可以通過關閉看到價值:將參數傳遞給名稱引用的回調函數
var number = 777;
$('span').click(function() {
alert(number); //alerts 777 - available through closure
});
但如果在「數字」變量是不可用的功能被預先確定,關鍵是行不通的。該功能number_alerter無法看到「數字」變量函數是否綁定到事件是這樣的:
$('span').click(number_alerter);
看來,唯一的辦法是用「數字」的說法,並通過定義函數在「數字」 varible的功能:
//function defined somewhere earlier
function number_alerter(e, number) {
alert(number);
}
...
//current scope
var number = 777;
$('span').on('click', function(e) {
return number_alerter(e, number);
});
我的問題是,是否有另一種方式來這varible傳遞給「number_alerter」功能?也許這也有可能通過關閉?
編輯: 這是上述可能需要的真實情況。我有兩個功能:
array_sort(array, compare_function)
compare_values(value1, value2, case_insensitive)
功能array_sort使用函數array_sort時傳遞給compare_values函數只有兩個值,而第三大小寫不敏感的參數也應通過。我知道如何做到這一點的唯一方法是包裝compare_values功能到另一個功能:
var my_array = [];
var case_insensitive = true;
var wrapper = function(value1, value2) {
compare_values(value1, value2, case_insensitive)
}
array_sort(my_array, wrapper);
有沒有其他辦法,我能做到嗎?
你爲什麼這樣做。稍微回過頭來描述一下你試圖解決的實際問題。它只是試圖保存幾個字符? – FakeRainBrigand
@FakeRainBrigand,這主要是爲了更好地理解JavaScript。 –
好的。只是你知道,如果這種情況出現在實際的應用程序中,這意味着你的代碼會混淆大多數人。 – FakeRainBrigand