Javascript:$$全局变量被认为是邪恶?

时间:2010-11-11 14:28:12

标签: javascript jquery

这些天我写了很多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')
    );
);

您是否认为上述创建$$的方法是合法的还是您认为是禁止的?

5 个答案:

答案 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微模板系统可能是更好的方法。