Tag: ecmascript harmony

在ECMAScript 6中是否使用“严格”?

我想知道ECMAScript 6何时到来,我们还需要在js代码中使用“严格使用”吗?

函数方式来遍历范围(ES6 / 7)

使用更多function的方式做什么是最好的方式(与ES6 / ES7) let cols = []; for (let i =0; i <= 7; i++) { return i * i; } return cols; 我试过, return [ …7 ].map(i => { return i * i; }); 但是被翻译成 [].concat(7).map(function (n) { return n * n; }); 这不是我所期望的。 编辑: @pavlo。 的确,这是一个错误。 我正在使用JSX,例如,我想要7个div(未经testing) let cols = []; for (let […]

克隆除一个键以外的js对象

我有一个平坦的JS对象: {a: 1, b: 2, c: 3, …, z:26} 我想克隆除了一个元素的对象: {a: 1, c: 3, …, z:26} 最简单的方法是什么(如果可能的话,宁愿使用es6 / 7)?

如何为JavaScript集定制对象相等

新的ES 6(和谐)引入了新的Set对象。 Set使用的身份algorithm类似于===运算符,因此不太适合比较对象: var set = new Set(); set.add({a:1}); set.add({a:1}); console.log([…set.values()]); // Array [ Object, Object ] 如何自定义Set对象的相等性以便进行深度对象比较? 有没有像Java equals(Object) ?

有没有一个机制在ES6(ECMAScript 6)没有可变variables循环x次?

在JavaScript中循环x次的典型方式是: for (var i = 0; i < x; i++) doStuff(i); 但是我不想使用++运算符或者任何可变variables。 那么在ES6中有没有办法以另一种方式循环x次? 我喜欢Ruby的机制: x.times do |i| do_stuff(i) end 在JavaScript / ES6中有类似的东西吗? 我可以欺骗,做我自己的发电机: function* times(x) { for (var i = 0; i < x; i++) yield i; } for (var i of times(5)) { console.log(i); } 当然,我仍然在使用i++ 。 至less它是看不见的:),但我希望在ES6中有一个更好的机制。

如何将设置转换为数组?

设置似乎是一个很好的方式来创build具有保证独特元素的数组,但它并没有公开任何好的方法来获取属性,除了generator [Set] .values,这是以一种尴尬的方式调用mySet.values.next() 。 如果你可以在集合上调用map和类似的函数,这将是可以的。 但是你也做不到。 我已经尝试了Array.from ,但似乎只将数组(像NodeList和TypedArrays?)对象转换为数组。 另一个尝试: Object.keys不能用于集合,并且Set.prototype没有类似的静态方法。 所以,问题: 是否有任何方便的内置方法创build一个给定的值的数组? (元素的顺序并不重要)。 如果没有这样的select,那么也许有一个很好的惯用的单线程来做到这一点? 喜欢, for…of或类似的?

我目前可以在Web浏览器中使用哪些ECMAScript 6function?

ES6看起来像一个令人难以置信的令人敬畏的语言! 我对在线video和演示幻灯片中看到的所有内容印象深刻。 我很好奇如何在现代浏览器中使用ES6。 ES6“生产准备好了吗?” 此外,有没有办法让我的ES6代码向后兼容较旧的ECMAscript运行时?

什么时候应该在ECMAScript 6中使用箭头function?

这个问题针对的是那些在即将到来的ECMAScript 6(Harmony)中已经考虑过代码风格并且已经使用过该语言的人。 有了() => {}和function () {}我们得到了两种非常类似的方式来在ES6中编写函数。 在其他语言中,lambda函数通常是匿名的,但在ECMAScript中,任何函数都可以是匿名的。 这两种types中的每一种都具有唯一的使用领域(即,当this需要显式地绑定或明确地不被绑定时)。 在这些领域之间有很多情况下,任何符号都可以做。 ES6中的箭头function至less有两个限制: 不要与new工作 修正了初始化时的范围限制 除了这两个限制外,箭头函数在理论上可以在几乎任何地方取代常规函数 在实践中使用它们的正确方法是什么? 如果使用箭头function,例如: “在任何地方工作”,即在任何地方,函数不必对thisvariables不可知,我们也不是创build一个对象。 只有“需要的地方”,即事件监听器,超时,需要绑定到某个范围 具有“短”function但不具有“长”function 仅限于不包含其他箭头function的function 我正在寻找的是在ECMAScript的未来版本中select适当的函数表示法的指南。 指导方针必须清楚,以便可以教给团队的开发人员,并保持一致,以便不需要不断地从一个函数表示法到另一个函数表示法的重构。

为什么要将符号带入JavaScript?

正如你可能知道他们正计划在ECMAScript 6中包含新的Symbol原始types(更不用说其他一些疯狂的东西了)。 我一直认为Ruby中的:symbol概念是不必要的, 我们可以轻松地使用纯string,就像我们在JavaScript中所做的一样。 现在他们决定用JS来使JS变得复杂。 我不明白这个动机。 有人可以向我解释我们是否真的需要JavaScript中的符号? 更新 :最近来自Mozilla的一篇精彩文章出现了。 如果你好奇,请阅读。

JavaScript双冒号(绑定运算符)

如你所知,有一个提议.bind()函数的快捷方式,所以你可以写: ::this.handleStuff 它将在es5中像这样工作: this.handleStuff.bind(this) 我的问题是:是否有可能通过这样的论据? 我的意思是用上面提到的捷径写这个的方法: this.handleStuff.bind(this, 'stuff') 这在React中是一个很常见的模式,所以稍微缩短它会很好。