JavaScript syntax: Difference between revisions

Content deleted Content added
No edit summary
Tags: Mobile edit Mobile web edit Advanced mobile edit
explain iterators better
Line 430:
</syntaxhighlight>
 
There are also ''well known symbols''. <!-- TODO: Add table or something -->
<!-- what does this mean and how is it "variable free"?
 
One of which is <code>Symbol.iterator</code>; if something implements <code>Symbol.iterator</code>, it's iterable:
"The Symbol wrapper also provides access to a [sic] variable free iterator."
 
<syntaxhighlight lang="javascript">
let x = [1, 2, 3, 4]; // x is an Array and iterable
ex=x[Symbol.iterator]() === Array.prototype[Symbol.iterator]; // providesand anArrays iteratorare for xiterable
while ((exv=ex.next().value)!=undefined) console.log(exv); // displays 1,2,3,4
</syntaxhighlight>
 
const xIterator = x[Symbol.iterator](); // The [Symbol.iterator] function should provide an iterator for x
-->
xIterator.next(); // { value: 1, done: false }
xIterator.next(); // { value: 2, done: false }
xIterator.next(); // { value: 3, done: false }
xIterator.next(); // { value: 4, done: false }
xIterator.next(); // { value: undefined, done: true }
xIterator.next(); // { value: undefined, done: true }
 
// for..of loops automatically iterate values
for (const value of x) {
console.log(value); // 1 2 3 4
}
 
// Sets are also iterable:
[Symbol.iterator] in Set.prototype; // true
 
for (const value of new Set(['apple', 'orange'])) {
console.log(value); // "apple" "orange"
}
</syntaxhighlight>
 
==Native objects==