我有以下功能: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