jquery!$坏代码?或没有?

时间:2015-08-13 12:01:57

标签: javascript jquery

我正在调试一个jquery代码,我找到了语法!$,对我来说是非常正常但我从未见过!$,你知道伙伴们的意思吗?或者那是错的还是意味着什么?

jquery文件

<script type="text/javascript">
    if(!$(".class").length){
                alert();            
    }   
    if(google < 4 && !$(".class").hasClass("blue")) {
    $("#id").addClass('yellow');
</script>

3 个答案:

答案 0 :(得分:2)

这一个:

!$(".class").length

如果没有类名为class的元素,则其长度为0,相当于js中的false!表示不操作。

所以,!0表示true

和这一个:

!$(".class").hasClass("blue")

在jQuery hasClass中返回布尔值true/false,因此它的输出将相反。

如果元素为蓝色,则!true表示false,如果元素不具有类,则!false表示true

答案 1 :(得分:1)

您误解为!$,但!正在阅读完整的表达式,而不只是$

看起来可能更清楚:

if( !($(".class").length) ) //inner () gets evaluated then inverted by `!`

或者:

var hasClassLength = $(".class").length;
if(!hasClassLength)

这两个示例与if( !$(".class").length )

的示例相同

请参阅MDN Docs - logical not operator

答案 2 :(得分:0)

在此上下文中,

!在许多编程语言中意味着NOT,并且将简单地修改后面的内容。出于与您遇到的完全相同的原因,通常可以避免这种情况。扫描有时会很麻烦,因为它需要额外的大脑processing来解析你的脑袋。

但有时它是必不可少的,你会看到它被使用。

因为有些人已经解释过它没有引用$本身,而是$(“。class”)长度解析为什么。

您可以继续输入!以继续添加NOT。

我发现阅读时我的头脑中有'NOT'替换!有帮助。

所以!$(“。class”)。我头脑中的长度读作:The DOM element with .class does NOT have any length.

一个例子:

true == true
!true == false
!false == true
!!true == true