有没有人能解释和证明哪一个例子“更正确”?
A:将对象作为参数传递
(function($){
$.doStuff();
})(jQuery);
B:在函数中检索对象
(function(){
var $ = jQuery;
$.doStuff();
})();
我真的很喜欢B,因为它的可读性。A和B之间唯一的技术区别是B必须多查找一个范围。我认为这是微乎其微的差别,那么为什么“重获”是A的方式呢?
注意,jQuery只是一个例子。问题的本质是重要的:作为参数传递还是在函数中检索?
发布于 2013-12-30 09:21:37
两者都是等价的,但我更喜欢第一个示例(作为参数传递),因为它节省了一行代码。这也意味着您的函数不包含不必要的逻辑。
发布于 2013-12-29 23:36:05
第二种方法只有在jQuery库的名称真正为"jQuery“时才能工作。像这样调用.noConflict()
是可能的(虽然不寻常):
window.banana = jQuery.noConflict( true );
那么,您的第一个示例仍然有效:
(function($) {
$.doStuff();
})( banana );
但是您的第二个示例将失败(如所写的)。当然,你也可以把“香蕉”这个名字硬编码到第二个,但是如果这个函数不是直接在你的控制之下,你就不能;而且这也是一个“干”的违规行为。
假设您已经在一个单独的JavaScript源文件中加载了一个初始化函数;也许它是一个第三方脚本。如果您想在初始化时调用该函数,那么如果函数将jQuery引用作为参数,而不是仅仅假设全局符号是任何特定的东西,那么您将具有更大的灵活性。
alienInitializationFunction( banana );
还是会起作用的换句话说。
https://stackoverflow.com/questions/20831296
复制相似问题