我有以下功能:JS變量的作用域問題
function initPaymentBlock(bIdx) {
var paymentType = 'default';
if($('#gc-apply-btn-'+bIdx).length) {
$('#gc-apply-btn-'+bIdx).click(function() {
poApplyGiftCard(bIdx);
console.log("about to change payment type");
paymentType = 'credit card';
console.log("paymentType inside function: " + paymentType);
});
}
console.log("payment type: " + paymentType);
poGetPaymentOption(paymentType, 0, bIdx);
}
的paymentType
變量設置爲初始的語句中的「默認」。在內部點擊功能中,它被更改爲「信用卡」。當我在內部函數中運行console.log
語句時,它返回credit card
。 console.log
以外的內部函數(就在poGetPaymentOption
調用之前)返回「默認」。
我知道問題是變量的範圍,但無法弄清楚我可以如何設置它,以便poGetPaymentOption
函數調用獲取正確的值(如果未單擊按鈕之前就會點擊「默認」它運行;如果按鈕被點擊,則爲'信用卡'。)有人可以幫我嗎?
認沽'poGetPaymentOption' click事件裏面?這實際上取決於你想要做什麼以及何時嘗試去做。 – Leeish 2013-03-08 22:26:28
不能。在主函數中定義了其他函數,並且需要在所有函數之後調用其他函數。不想通過在每個內部函數中打電話來重複它。 – EmmyS 2013-03-08 22:28:17
那麼,如果是這種情況,那麼當'poGetPaymentOption'運行時,'paymentType'將始終是它的初始值,因爲只有當有人點擊某件東西時它才能改變,並且從你剛纔所說的'poGetPaymentOption'在initPaymentBlock得到時運行跑。 – Leeish 2013-03-08 22:29:18