TypeError: 'x' is not iterable (Firefox, Chrome) TypeError: 'x' is not a function or its return value is not iterable (Chrome)é误类å åçäºä»ä¹é误ï¼
è¿ä¸ªå¼ä½ä¸º forâ¦of ç表达å¼å³å¼ï¼æè
ä½ä¸ºä¸ä¸ªå½æ°çåæ°ï¼å¦ Promise.all
æè
TypedArray.from
, 䏿¯ä¸ä¸ª å¯è¿ä»£å¯¹è±¡. ä¸ä¸ªå¯è¿ä»£å¯¹è±¡å¯ä»¥æ¯ä¸ä¸ªå
ç½®å¯è¿ä»£ç±»åï¼å¦Array
, String
æ Map
, ä¸ä¸ª generator çæç»æï¼æè
ä¸ä¸ªå®ç°äº å¯è¿ä»£åè®® ç对象
å¨ JavaScript ä¸ï¼Object
æ¯ä¸å¯è¿ä»£çï¼é¤éå®ä»¬å®ç°äºè¿ä»£åè®®. å æ¤ï¼ä½ ä¸è½ä½¿ç¨ forâ¦of æ¥è¿ä»£å¯¹è±¡ç屿§ã
var obj = { France: "Paris", England: "London" };
for (let p of obj) {
// TypeError: obj is not iterable
// â¦
}
å为æ¿ä»£ä½ å¿
é¡»ä½¿ç¨ Object.keys
æ Object.entries
æ¥è¿ä»£å¯¹è±¡ç屿§æå±æ§å¼ã
var obj = { France: "Paris", England: "London" };
// è¿ä»£å±æ§åç§°ï¼
for (let country of Object.keys(obj)) {
var capital = obj[country];
console.log(country, capital);
}
for (const [country, capital] of Object.entries(obj))
console.log(country, capital);
è¿æ¬¡ case çå¦å¤ä¸ä¸ªéæ©æ¯ä½¿ç¨ Map
:
var map = new Map();
map.set("France", "Paris");
map.set("England", "London");
// Iterate over the property names:
for (let country of map.keys()) {
let capital = map[country];
console.log(country, capital);
}
for (let capital of map.values()) console.log(capital);
for (const [country, capital] of map.entries()) console.log(country, capital);
Iterating over a generator
çæå¨æ¯ç¨æ¥çæå¯è¿ä»£å¯¹è±¡ç彿°ã
function* generate(a, b) {
yield a;
yield b;
}
for (let x of generate) // TypeError: generate is not iterable
console.log(x);
å½å®æ²¡æè¢«è°ç¨ï¼è¿ä¸ª Function
ç¸åºçæ¯å¯è°ç¨çï¼ä½æ¯ä¸å¯è¿ä»£ãè°ç¨ generator çæä¸ä¸ªå¯è¿ä»£å¯¹è±¡ï¼è¯¥å¯¹è±¡å°è¿ä»£å¨çæå¨æ§è¡æé´çæçå¼ã
function* generate(a, b) {
yield a;
yield b;
}
for (let x of generate(1, 2)) console.log(x);
Iterating over a custom iterable
å¯ä»¥ä½¿ç¨Symbol.iterator
æ¹æ³å»å®ç°ä¸ä¸ªèªå®ä¹è¿ä»£å¨ãä½ å¿
须确å®èªå®ä¹çè¿ä»£å¨æ¹æ³è¿åä¸ä¸ªè¿ä»£å¨å¯¹è±¡ï¼å³å®å¿
é¡»æä¸ä¸ª next()
const myEmptyIterable = {
[Symbol.iterator]() {
return []; // [] is iterable, but it is not an iterator -- it has no next method.
},
};
Array.from(myEmptyIterable); // TypeError: myEmptyIterable is not iterable
ä¸é¢æ¯æ£ç¡®ç¨æ³
const myEmptyIterable = {
[Symbol.iterator]() {
return [][Symbol.iterator]();
},
};
Array.from(myEmptyIterable); // []
åé
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4