2
有人可以向我解釋爲什麼startDate和endDate不在範圍內傳遞給過濾函數的回調函數中。回調函數的詞法範圍
var events = [],
eventsDataSource = [],
statusChstatusChanges = [],
statusChangesDataSource = [];
function filterData() {
var startDate = $('#start-date').data("kendoDatePicker").value();
var endDate = $('#end-date').data("kendoDatePicker").value();
events = eventsDataSource.filter(function (item) {
debugger;
});
statusChanges = statusChangesDataSource.filter(function (item) {
debugger;
});
}
當我將代碼更改爲下面的工作。 starDate和endDate在範圍內。回調函數/內聯函數的詞法範圍是否與函數聲明不同?
function filterData() {
var startDate = $('#start-date').data("kendoDatePicker").value();
var endDate = $('#end-date').data("kendoDatePicker").value();
function dateIsBetweenStartAndEnd(item) {
return new Date(item.Date) >= new Date(startDate) && new Date(item.Date) <= new Date(endDate);
}
events = eventsDataSource.filter(dateIsBetweenStartAndEnd);
statusChanges = statusChangesDataSource.filter(dateIsBetweenStartAndEnd);
}
也許,但這只是一個猜測,這是因爲您聲明並分配了'events'first(filterData'外部),稍後在'filterData'中聲明'startDate'和'endDate'。這可能是吊裝的問題嗎?嘗試在'filterData'函數內聲明'events'在哪裏使用它 – Pimmol