は、次のコードを考えてみましょう:私はJSLintでこれをチェックするとJSスコープ問題
function processParagraph(paragraph) {
if (paragraph.charAt(0) === '%') {
for (var level = 0; paragraph.charAt(level) === '%'; level++) {}
return {
type: 'h' + level,
content: paragraph.slice(level + 1)
};
}
return {
type: 'p' + level,
content: paragraph
};
}
、それは第二return文でlevel
がused out of scope.
であることを不平を言います。
なぜですか? AFAIK、JavaScriptにはレキシカルスコープ/機能スコープがあります。ネストされた関数がないので、コードは完全に有効でなければなりません。または私は何かを逃していますか?
paragraph.charAt(0)が '%'と等しくない場合の 'レベル'の値は何ですか?最初の "レベル"の宣言はifステートメント内にあるので、決して定義されていない変数を使用する可能性について不平を言っているかもしれません。 – adelphus
JSLintがこの変数について不平を言ってもよろしいですか?このコードは正しいです。 Btw関数の初めに変数を宣言する方が良いでしょう。なぜなら、このコードは読みにくいからです。 –