首先,您需要精确定义需求是什么。在您的代码中,您针对undefined
html 的 jQuerys 实现进行测试永远不会返回undefined
,因此没有理由对此进行测试。但是,可能有也可能没有理由针对 null 进行测试
<div id="spanSelectedLayout">content</div>
var txt = $("#spanSelectedLayout").html() //txt will be "content"
<div id="spanSelectedLayout"> </div>
var txt = $("#spanSelectedLayout").html() //txt will be return " "
<div id="spanSelectedLayout"> </div>
var txt = $.trim($("#spanSelectedLayout").html()) //txt will be return ""
<div id="spanSelectedLayout"> </div>
var txt = $("#spnSelectedLayout").html() //txt will be null
后者最有可能由于选择器拼写错误而发生,即一个错误,因此您可能应该区别对待它而不是 "" 或全空白字符串。但是 "" 和所有空白 HTML 在语义上是相同的,因此您可能应该将这些值视为相同,这可能会导致
var selectedLayOutIdx=$.trim($("#spanSelectedLayout").html()); if( selectedLayOutIdx == "" ) { //为空 }
但是$.trim(null)
返回""
而不是空,因此仍然会隐藏错误,因此您必须在更简洁的代码或类似的代码之间做出决定
var selectedLayOutIdx=$("#spanSelectedLayout").html();
if(selectedLayOutIdx == null) { throw "Invalid selector" }
if( && $.trim(selectedLayOutIdx) == "" ) {
//is empty
}