我需要为一些日期选择器设置dateFormat
。
定义dateFormat
的最佳方式是什么?
定义一个简单的方法,如
function dateFormat() {
return 'yy-mm-dd';
}
或全局变量,如
dateFormat = 'yy-mm-dd'
答案 0 :(得分:1)
好的,根据your comment:
@MarkusHofmann,谢谢你的回复。你可以帮我解决何时在jquery中使用全局变量的例子吗?
...我一直在寻找有关 jQuery 使用全局变量的信息。
在这里,我将总结我发现的内容。你可以在这个答案的最后找到消息来源。
通常只需省略var
(就像在问题中所做的那样)来定义全局变量:
dateFormat = 'yy-mm-dd';
但是!!! 省略var
会生成隐式全局,这是一件坏事,会在严格模式下生成错误。
但是,如果您需要在生产代码中生成全局变量(应该避免)总是明确声明它们:
window.dateFormat = 'yy-mm-dd';
您可以使用上述方法在window / jQuery对象中的命名空间内创建 global vars :
窗口对象:
window.myNameSpace = {
dateFormat = 'yy-mm-dd',
...
};
jQuery对象:
$.myNameSpace = {
dateFormat = 'yy-mm-dd',
...
};
但请记住要小心命名命名空间,因为如果插件中有另一个相同的命名空间,则可能会出现命名冲突。我建议将全局变量封装在一个全局命名空间中,因为这使得它独立于jQuery,并且不会混淆其命名空间。
将全局变量封装在一个全局命名空间中:
var MyNameSpace = {}; // The global object container
MyNameSpace.dateFormat = 'yy-mm-dd';
您也可以使用Closure来定义全局变量或Private Member Variables。
简而言之: 避免全局是最佳做法。
我想在我的回答中添加一个东西:当我为jQuery编写插件时,我将所有代码放在Immediately Invoked Function Expression (IIFE)内,然后传递函数 jQuery ,并将参数命名为 $ 。这个闭包允许你拥有自己的私有变量并保护jQuery $
别名:
(function( $ ){
...YOUR CODE HERE...
})( jQuery );
Ben Alman 在其网站上有a good post,提供有关IIFE的更多信息。
还有一个与IIFE相关的问题,在StackOverflow上有值得一读的好答案:
Using 'window', 'document' and 'undefined' as arguments in anonymous function that wraps a jQuery plugin