我正在研究一個jQuery插件,但在正確使用我的變量時遇到了一些麻煩。下面是我的代碼示例:如何在jQuery中正確地確定變量範圍?
(function($) {
$.fn.ksana = function(userOptions) {
var o = $.extend({}, $.fn.ksana.defaultOptions, userOptions);
return this.each(function() {
alert(rotate()); // o is not defined
});
};
function rotate() {
return Math.round(o.negRot + (Math.random() * (o.posRot - o.negRot)));
};
$.fn.ksana.defaultOptions = {
negRot: -20,
posRot: 20
};
})(jQuery);
我試圖讓私有函數旋轉,以便能夠看到O變量,但它只是不斷提醒「O沒有定義」。我不確定我做錯了什麼。
+1既然你不暴露'旋轉'在插件外部,不妨將變量作爲參數傳遞,以避免產生不必要的全局狀態。 – R0MANARMY 2010-05-28 20:45:10
這可能是一個愚蠢的問題,但不會產生額外的開銷?我將會有很多需要訪問o的函數,所以我會把o傳遞給很多... – safetycopy 2010-05-28 20:52:58
@safetycopy:那麼,你可以將'o'暴露給更多的函數,就像我說的我的第三種方法是在封閉範圍內定義「o」。 – CMS 2010-05-28 20:57:03