2016-11-01 36 views
2

比方說,我有這樣的代碼:如何使用「」讓我們」而不是‘無功’

if (input.length >= 3) { 
    var filtered_school = _.filter(schools, function (school) { 
     return _.startsWith(school.label, input); 
    }); 
    } 
this.setState({ options: filtered_school }) 

我不能用‘讓’,因爲它不能被看到的範圍之內,所以我可以「T分配filtered_schooloptions

但我聽說,沒有理由在ES6使用VAR。

如何使用讓這種情況呢?

+1

如果'input.length'不等於或大於3,'filtered_school'將在'this.setState'中未定義。 – robertklep

+1

將變量聲明移動到您打算使用它的範圍內,如*其他語言*。 JavaScript怪異的'var'語義是一種異常,而不是常態,它給開發者一個關於如何聲明變量的非常有趣的想法。 – meagar

回答

4

只要把它外:

let filtered_school; 
if (input.length >= 3) { 
    filtered_school = // ... 
}); 

let是塊範圍的,這意味着如果你在if塊中定義它,它不會在它之外存在,所以你必須提取出來的這種情況。

4

您聲明瞭要在其中使用它的範圍內的變量,即在if塊之外。

let filtered_school; 
if (input.length >= 3) { 
    filtered_school = _.filter(schools, function(school) { 
    return _.startsWith(school.label, input); 
    }); 
} 
this.setState({ 
    options: filtered_school 
}) 
1

let創造了ES6塊級的範圍,你可以在外面聲明它在你的filter分配給它。

let filtered_school; 
if (input.length >= 3) { 
    filtered_school = _.filter(schools, function (school) { 
     return _.startsWith(school.label, input); 
    }); 
    } 
this.setState({ options: filtered_school }) 
1

let是塊作用域,所以如果let是某處內{},或在邏輯塊,也只會是訪問那裏。爲了使它在您的示例之外可訪問,請將它置於if聲明之外。

let filtered_school; 
if (input.length >= 3) { 
    filtered_school = _.filter(schools, function (school) { 
     return _.startsWith(school.label, input); 
    }); 
} 
相關問題