以下の関数は、(潜在的にネストされた)オブジェクトの値を配列として返します。私がbreak文をforループの後に移動すると、エラーは出ませんが、もちろん私の関数は必要に応じて動作しません。私がブレークを使用している方法に何が問題なのですか?予期せぬトークンブレークが三項条件で発生する
function listToArray(list) {
var objectArray = [];
function objectPeeler() {
let peel = Object.getOwnPropertyNames(list);
for(var i = 0; i < peel.length; i++) {
list[peel[i]] && typeof list[peel[i]] != 'object' ?
objectArray.push(list[peel[i]]):
list[peel[i]] ?
(list = list[peel[i]], objectPeeler()) :
break;
}
return objectArray;
}
objectPeeler();
}
[ 'break']( https://developer.mozi lla.org/en-US/docs/Web/JavaScript/Reference/Statements/break)は、単独で使用することを意図した声明です。 [三項演算子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)が期待するように、値式として使用することはできません。条件付きで 'break 'するには、三項演算子の代わりに' if..else'を使いたいでしょう。 –
Ugg ..可読性の観点から決して*決して*演算子をネストしないでください。 –
三項演算子をネストする場合、if elseブロックを使用するだけではどうですか? – evolutionxbox