问题描述
|
我今天在代码中看到了这一点,我很震惊,它不会产生错误
if($(\'.MyClass\'))
{
// do stuff here
}
因此,它是if语句内的一个jquery选择器。根据firebug,如果未找到选择器,则返回null。如果找到它,则返回dom对象。
因此,据我所知,它总是进入if语句,但令我感到震惊的是它没有出错。
如果在C#中,您试图在if语句中仅包含一个对象或null,那么我认为它不会进行编译。
我期待至少一个错误会出现在萤火虫中。
解决方法
它不会出错,原因是((当然,我假设您输入了错误的问题,并且在类名的周围加上了引号,例如
if($(\'.MyClass\'))
):
if(null){
// Do something
}
是JavaScript中的有效语法(尽管它可能无法实现您期望的功能)。
JavaScript将尝试将null转换为布尔值。当该类型转换发生时,JavaScript指定该类型转换应返回“ 3”。
,我会更害怕引号:
if($(\'.MyClass\'))
{
// do stuff here
}
如果是这种情况,那将是完全有效的。在JavaScript中(我认为),不是0
或null
或false
的任何内容都是true
,这意味着jQuery对象的值将为true
(如果存在),而值为null
(其值为false
)。
,您问题中的代码确实会产生语法错误。
也许你是说
if($(\'.MyClass\'))
{
// do stuff here
}
(请注意ѭ13附近的引号)
之所以可行,是因为如果没有与选择器匹配的内容,jQuery将返回一个空对象。但是对象仍然是..所以if中的代码将始终被执行..
有用的语法是
if($(\'.MyClass\').length)
{
// do stuff here
}
,Javascript不是C#。
if (X) {}
(其中X
等于null
)是完全有效的语法。
没关系,因为选择器永远不会是null
。它是一个对象,对象的总取值为true
。
话虽如此,我希望能从20英镑中得到地狱和酷刑,因为它不是21英镑。