0
語句和操作者有一個在ECMA-262規範的說明:的JavaScript在
是需要的,[IN]語法參數,以避免與在操作者以用於迷惑在操作者在一個關係式聲明。
所以有什麼辦法讓
for (let i in x in y) {
console.log(i);
}
打印的東西嗎?
語句和操作者有一個在ECMA-262規範的說明:的JavaScript在
是需要的,[IN]語法參數,以避免與在操作者以用於迷惑在操作者在一個關係式聲明。
所以有什麼辦法讓
for (let i in x in y) {
console.log(i);
}
打印的東西嗎?
括號將使解析更清楚:
for (let i in (x in y)) {
console.log(i);
}
但是,如果沒有他們,它實際上解析罰款。需要消除歧義的其他種類的for循環:
for (let a = b in c; false;); // does not parse
for (let a = (b in c); false;); // parses fine
您的代碼段不打印任何東西的原因是,x in y
總是導致一個布爾值,因此它不會打印任何東西,除非你已經定義枚舉Boolean.prototype
或Object.prototype
的性質:
Boolean.prototype.foo = 'bar';
for (let a in ('' in {})) {
console.log(a);
} // prints 'foo'