草庐IT

ecmascript-next

全部标签

javascript - 当关键字后的表达式未计算为 promise 时, `await` 会发生什么情况?

我有这样的ES7代码。asyncfunctionreturnsfive(){varthree=3;varthreeP=awaitthree;returnthreeP+2;}returnsfive().then(k=>console.log(k),e=>console.error("err",e))varthreeP=awaitthree行应该发生什么?代码应该按预期继续,还是失败,因为three不是一个promise?在thisrepo,它被称为“有争议的语法和语义”。我无法通读官方文档来找到确切的定义,因为它太技术化了。默认的babel.js转换按预期记录5;然而,nodent-一个

javascript - ECMAScript 中的内部属性是为什么定义的?

什么InternalProperty在ECMAScript中定义为?规范是什么意思Thisspecificationusesvariousinternalpropertiestodefinethesemanticsofobjectvalues.TheseinternalpropertiesarenotpartoftheECMAScriptlanguage.Theyaredefinedbythisspecificationpurelyforexpositorypurposes.这是否意味着ECMAScript定义的内部属性不可用于编程。它们用于javascript引擎的实现?

javascript - 有人用过 ECMAScript 代理吗?

我正在尝试掌握ESx(Harmony?)Proxies.我想我现在了解基础知识,但我认为我无法利用它们。有没有人设法将它们用于任何好处?我不知道有任何图书馆或任何机构这样做过。 最佳答案 代理是一项相当具有战略意义的功能,主要用于实现绑定(bind)或高级库抽象。如果您没有看到自己代码的直接用例,请不要担心。事实上,如果您这样做了,在使用它们之前您应该至少三思——它们往往是矫枉过正的,并且有一种更简单、更有效的方法来实现同样的目的。原始提案页面上有几个示例:http://wiki.ecmascript.org/doku.php?id

javascript - 用户界面路由器 : How to get next state params in transition

我正在使用ui-router1.0.0.beta.3。如何在转换期间获取下一状态的路由参数?index.run.js$transitions.onStart({to:'**'},verifyAuth);functionverifyAuth(trans){letnextState=trans.$to();if(Auth.verify(nextState.authGroup)===-1){return$state.go('login',{nextState:nextState.name,nextParams:nextState.params});//thisdoesn'twork}}我想存

javascript - ECMAScript 6 中的 Symbol.for(string)

我花了一段时间,但我终于弄清楚了ECMAScript6中符号的用途是什么:在将属性附加到共享对象时避免名称冲突-HTML元素,例如(如果你遇到同样的问题,我推荐thisarticle。)但后来我偶然发现了Symbol.for().显然ECMAScript6将维护一个全局符号注册表,您可以通过提供符号描述来使用此功能查询。再来?如果我使用符号来避免名称冲突,为什么我要让我自己的代码以外的代码使用它们?(*)我将如何避免在该全局注册表中发生名称冲突?符号共享似乎完全颠覆了这一概念,而全局注册表更是双重颠覆。(*)是的,我知道符号不是真正私有(private)的,但这不是重点。

javascript - 在 Javascript ECMAScript 6 中从类名创建对象

我想使用ES6创建对象工厂,但旧式语法不适用于新语法。我有下一个代码:exportclassColumn{}exportclassSequence{}exportclassCheckbox{}exportclassColumnFactory{constructor(){this.specColumn={__default:'Column',__sequence:'Sequence',__checkbox:'Checkbox'};}create(name){letclassName=this.specColumn[name]?this.specColumn[name]:this.spec

javascript - 将函数 * 提升为异步函数 *?

假设我有一个函数,它接受一个生成器并返回第一个n元素的另一个生成器:consttake=function*(n,xs){console.assert(n>=0);leti=0;for(constxofxs){if(i==n){break;}yieldx;i++;}};用法如下:constevens=function*(){leti=0;while(true){yieldi;i+=2;}};for(constxoftake(10,evens())){console.log(x);}现在假设evens也是async(设置见thisanswer):constevensAsync=asyncf

javascript - EcmaScript-6 向后兼容性

我很想了解/弄清楚ECMAScript-6的新变化是否适用于旧浏览器。我问这个问题的原因是:我记得在ECMAScript-5中引入了'usestrict';,这是为了兼容旧版本。这意味着旧浏览器将继续正常工作,当它们在解析新的JavaScript代码时遇到'usestrict';语句时将忽略它。并且新的JS引擎将以某种特殊方式处理语句'usestrict';,详见此处Strictmode.所以,来到这个问题我非常怀疑并且很想知道兼容ECMAScript-5的浏览器在解析ECMAScript-6代码时会如何表现。我怀疑的原因是ECMAScript-6新特性涉及语法更改/更新。旧的浏览器是

javascript - ECMAScript 6 中更短的类初始化

每次我创建一些类时,我都需要执行相同的无聊过程:classSomething{constructor(param1,param2,param3,...){this.param1=param1;this.param2=param2;this.param3=param3;...}}有什么办法可以让它更优雅、更短吗?我使用Babel,因此允许使用一些ES7实验性功能。也许装饰器可以提供帮助? 最佳答案 您可以使用Object.assign:classSomething{constructor(param1,param2,param3){O

javascript - 用 ECMAScript 重写 AngularJS 2.0?

所以我今天才发现Angular2.0即将推出,他们使用ECMAScript6,但将其编译为5,等等,等等。这(使用ECMAScript)将如何影响使用?它如何与我用来调用其API的JavaScript兼容?我的意思是,将不同的语言(ES、JS)写在一起?对它的工作原理感到困惑。感谢您的帮助。编辑抱歉@Joseph如果我的问题不够清楚,但我也(主要)想知道ECMAScript5如何在浏览器中运行以及上面的第二段在上下文中保持这一点。JavaScript人员如何使用Angular2.0?ES如何与JS代码协同工作?来自docs:ThoughAngularwillbeinES6,youcan