ECMAScript 2015,迭代解构表达式 [英] ECMAScript 2015, iterable destructuring expression
本文介绍了ECMAScript 2015,迭代解构表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如:
var x,y,myIterable = [];
myIterable [Symbol.iterator] = function *(){
var count = 0;
while(count< 2){
yield count ++;
}
};
var myArray = Array.from(myIterable);
console.log(([x,y] = myArray)=== myArray);
// OUTPUT:true
但是,如果我以这种方式尝试它返回 false
,你可以解释为什么吗?
var x ,y,myIterable = [];
myIterable [Symbol.iterator] = function *(){
var count = 0;
while(count< 2){
yield count ++;
}
};
var myArray = Array.from(myIterable);
[x,y] = myArray;
console.log([x,y] === myArray);
// OUTPUT:false
解决方案
===
通过引用比较对象,因为 myArray
和 [x,y]
评估为不同的数组。
[] === []; // false
{} === {}; // false
I am right now experimenting with the iterable destructuring expression, and i am wondering why a specific way does not work. Maybe you can help me on that.
For example that works:
var x, y, myIterable = [];
myIterable[Symbol.iterator] = function* () {
var count = 0;
while(count < 2){
yield count++;
}
};
var myArray = Array.from(myIterable);
console.log(([x,y] = myArray) === myArray);
//OUTPUT: true
But if i try it this way it returns false
, can you explain why?
var x, y, myIterable = [];
myIterable[Symbol.iterator] = function* () {
var count = 0;
while(count < 2){
yield count++;
}
};
var myArray = Array.from(myIterable);
[x, y] = myArray;
console.log([x,y] === myArray);
//OUTPUT: false
解决方案
===
compares objects by references, since myArray
and [x, y]
evaluate to a different array.
[] === []; // false
{} === {}; // false
这篇关于ECMAScript 2015,迭代解构表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文