Shorthand/implicit 没有 if 的 if() 语句
Shorthand/implicit if() statement with no if
JavaScript/jQuery 在 Smarty 模板中找到的代码:
( $( 'carriercode' ) && $( 'carriercode' ).value == '' )
{
alert( 'Please select Shipping Carrier Code' );
return false;
}
这与其说是一个问题,不如说是一种好奇心。
问题1:我以前从未见过这种结构。它看起来与 if()
语句完全一样,但没有 if
关键字。 valid/standard/reliably 受支持吗?
问题 2:jQuery 选择器正在寻找 carriercode
标签,这显然不是标准 HTML 的一部分。这是 Smarty 的特性,还是只是懒惰的开发人员编写了新标签?同样,它是否有效(在 Smarty 中)、标准做法,以及它是否可靠地工作?
相关:我在一个简单的 HTML 页面(如下)中做了一个最小测试,它有效但不是有效标记。我很好奇它是否能在不同的环境中可靠地工作。我在编写自己的代码时始终遵循标准,但有时在加入现有项目时进入并修复所有代码是不切实际的。
<!doctype html>
<html lang='en-gb'>
<head>
<meta charset='utf-8' />
<title>Test</title>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script>
//<![CDATA[
( $( 'test' ) && $( 'test' ).value === 'test' )
{
alert( 'test!' );
}
//]]>
</script>
</head>
<body>
<h1>Test</h1>
<p>Test</p>
<test value='test'></test>
</body>
</html>
我一直无法通过搜索互联网找到关于这些问题的更多信息,搜索 if
往往会 return 很多关于 JavaScript 的结果,适合初学者这可能会淹没像这样更深奥的案例的答案。提前感谢您的任何见解!
总结评论中提供的有用答案,以及更多信息:
省略条件语句中的if
只是意味着结果在评估后被丢弃。换句话说,这是一个错误。
令人困惑的是,我找到这段代码的代码库同时使用了 jQuery 和 Prototype.js,它们都默认使用 $()
结构。 $( 'test' ) && $( 'test' ).value === 'test'
有效 Prototype.js,它正在寻找 id
为 #test
的元素。这与 jQuery 形成对比,在其中查找 id
它必须在选择器中以 #
为前缀。事实上,此代码库使用 jQuery 的 noConflict()
来避免使用 $()
,因为它会干扰 Prototype.js.
jQuery 选择器适用于 任何 元素名称,而不仅仅是那些在 HTML.
中有效的元素名称
我应该在提问之前做更多的测试。再次感谢评论者的帮助和耐心!
JavaScript/jQuery 在 Smarty 模板中找到的代码:
( $( 'carriercode' ) && $( 'carriercode' ).value == '' )
{
alert( 'Please select Shipping Carrier Code' );
return false;
}
这与其说是一个问题,不如说是一种好奇心。
问题1:我以前从未见过这种结构。它看起来与 if()
语句完全一样,但没有 if
关键字。 valid/standard/reliably 受支持吗?
问题 2:jQuery 选择器正在寻找 carriercode
标签,这显然不是标准 HTML 的一部分。这是 Smarty 的特性,还是只是懒惰的开发人员编写了新标签?同样,它是否有效(在 Smarty 中)、标准做法,以及它是否可靠地工作?
相关:我在一个简单的 HTML 页面(如下)中做了一个最小测试,它有效但不是有效标记。我很好奇它是否能在不同的环境中可靠地工作。我在编写自己的代码时始终遵循标准,但有时在加入现有项目时进入并修复所有代码是不切实际的。
<!doctype html>
<html lang='en-gb'>
<head>
<meta charset='utf-8' />
<title>Test</title>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script>
//<![CDATA[
( $( 'test' ) && $( 'test' ).value === 'test' )
{
alert( 'test!' );
}
//]]>
</script>
</head>
<body>
<h1>Test</h1>
<p>Test</p>
<test value='test'></test>
</body>
</html>
我一直无法通过搜索互联网找到关于这些问题的更多信息,搜索 if
往往会 return 很多关于 JavaScript 的结果,适合初学者这可能会淹没像这样更深奥的案例的答案。提前感谢您的任何见解!
总结评论中提供的有用答案,以及更多信息:
省略条件语句中的
if
只是意味着结果在评估后被丢弃。换句话说,这是一个错误。令人困惑的是,我找到这段代码的代码库同时使用了 jQuery 和 Prototype.js,它们都默认使用
$()
结构。$( 'test' ) && $( 'test' ).value === 'test'
有效 Prototype.js,它正在寻找id
为#test
的元素。这与 jQuery 形成对比,在其中查找id
它必须在选择器中以#
为前缀。事实上,此代码库使用 jQuery 的noConflict()
来避免使用$()
,因为它会干扰 Prototype.js.jQuery 选择器适用于 任何 元素名称,而不仅仅是那些在 HTML.
中有效的元素名称我应该在提问之前做更多的测试。再次感谢评论者的帮助和耐心!