我对"使用严格"的使用有疑问变量。
为什么以下操作无声地失败而不是抛出错误?
"use strict";
var $class = {};
$class.rowsICanDisplay = 10;
$class.difference = -1;
var absDifference = 1;
var gridTableBody = $('#mytable tbody');
//code removed for clarity
if($class.difference > 0) {
var offset = $class.rowsICanDisplay - absDifference; // mistake should be declared in outer scope
//code removed for clarity
$('tr:lt(' + offset + ')', gridTableBody).remove();
}
else {
//code removed for clarity
$('tr:gt(' + offset + ')', gridTableBody).remove(); // why does this fail silently
}
答案 0 :(得分:3)
$('tr:gt(' + offset + ')', gridTableBody).remove(); // why does this fail silently
由于未在offset
块的上下文中定义else
,因此您的选择器无效且无法匹配任何内容。
答案 1 :(得分:2)
因为Javascript没有阻止范围 函数中任何地方声明的任何变量对整个函数都是可见的。
JSHint会抓住这个问题。
答案 2 :(得分:1)
在else语句中,未定义偏移量。您需要将其拉出来并在"之外定义它,如果"结构体。