次のオブジェクトoと、空の配列であるコンソールプロパティに出力する関数findEmptyを考えてみましょう。else ifステートメントがfalseと評価される条件を入力する理由を特定できません
var o={
"StudentInfo": [{
"Name1": [{
"100": {
"a": "12"
}
}, {
"101": {
"a": "50"
}
}]
}, {
"Name2": [{
"102": {}
}, {
"103": {
"b": "50"
}
}]
}]
}
function findEmpty(obj)
{
for (var p in obj)
{
debugger;
var propValue = obj[p];
var condition = propValue && typeof propValue === 'object' && !Array.isArray(propValue);
if (Array.isArray(propValue) && propValue.length == 0) {
console.log('Property ' + p + ' has an empty array.');
}
else if (condition) {
findEmpty(propValue);
}
}
}
デバッグでは、else ifがチェックする条件がfalseになりますが、入力を続けます。私は行方不明で何ですか?
更新:デバッグ中に、実行している/それ以外の場合はfalse評価のためのコードを実行するのと同じブール変数のコンソールであれば。
。少なくともChrome 51では。 –
再生できません:https://jsfiddle.net/yLf0bjyt/ elseの中の警告は決して引き起こされません。記述している動作を複製するコードを表示する必要があります。 – JJJ
@JamesThope、お手伝いをしてくれてありがとう、もう一度試してみよう。 Firefoxを使っていますか? – Veverke