这些天我写了很多Javascript代码,我正在充分利用JQuery。我想知道创建奇怪的全局变量名称是否被认为是邪恶的。我知道很多Javascript框架如JQuery使用美元字符; $
,但这极大地简化了代码,因为它可以做很多事情。
我正在考虑在我的代码中创建一个$$
全局变量,其定义如下:
function $$(tagName)
{
return $('<' + tagName + ' />');
}
这样做的好处是我的代码(1)抽象出了创建新元素的逻辑,(2)使代码更简洁,最后(3)我几乎可以简单地在Javascript中创建html元素html本身,因为JQuery有很多其他的选择器可以链接:
$$('div').attr( { id : 'myDiv', 'class' : 'MyDivClass' }).append(
$$('ul').append(
$$('li').text('first'),
$$('li').text('second'),
$$('li').text('third')
);
);
您是否认为上述创建$$
的方法是合法的还是您认为是禁止的?
答案 0 :(得分:2)
我喜欢在一年中的任何一天使用清晰,有意义,自我记录的名称而不是JQuery样式$
。
另外我觉得令人困惑的是,同一个名称具有不同的含义,具体取决于它所使用的上下文。如JQuery中的$
或javascript中的this
并且将尽可能避免使用它们
编辑:在我看来,应该由用户决定是否要为他使用的框架使用简写名称。它只需要一行代码:
var $ = jQuery;
当我查看带有jQuery的页面时,我看到的是一大堆乱七八糟的美元符号在不同的地方做不同的事情。如果库为它提供的函数使用了有意义的名称,那么解密其他人的代码将会容易得多。 Javascript已经很难并且作为一种语言本身是不可读的。
答案 1 :(得分:2)
这当然是一种观点,但如果我是您的应用程序的新手,我将不得不去查找该函数的功能,以便理解代码。此外,该功能非常简单,其他开发人员可能不会费心使用它,所以你最终会混淆各种令人困惑的技术。真的,这真的很糟糕吗?
$('<div/>').attr( { id : 'myDiv', 'class' : 'MyDivClass' }).append(
$('<ul/>').append(
$('<li/>').text('first'),
$('<li/>').text('second'),
$('<li/>').text('third')
)
);
答案 2 :(得分:1)
就我个人而言,我认为它不会增加太多功能来解释“命名空间污染”,更不用说读取你的代码的人可能会混淆你的方法。
它只是在方法的每次调用中保存了一些微不足道的字符,所以在这方面它只能被认为是一种语法糖。在我看来,利弊超过职业选手。
答案 3 :(得分:1)
如果你看一下例如jQuery。 它不适用于几个全局变量/函数,只有一个全局对象需要“jQuery”。 其他所有东西都是这一个对象的属性,因此它们缩小了命名冲突。
在$$的特殊情况下:有时你可能需要使用prototypejs,但你不能,因为prototypejs已经使用了$$。
所以我的建议是:创建一个全局对象,自己的“库”,给它一个不同的名称,让你的函数/变量成为这个对象的成员。
答案 4 :(得分:0)
我不认为它一般是“邪恶的”,但是如果你要用“尊贵”的名字在全局命名空间中弹出一些内容,那么如果它更有趣的话可能会更好。出于您的目的,给定您的示例代码,jQuery微模板系统可能是更好的方法。