我正在研究一个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