草庐IT

es语法

全部标签

javascript - Babel 对 ES6 对象解构的实现是否正确?

所以基本的结构化很好,{a,b}=obj转译为a=obj.a;b=obj.b.我的问题是我不小心遇到了一些奇怪的语法,我想知道是否有人可以指出我的规范,因为我找不到它:({a,b}=obj).c这会执行两个a、b赋值,然后返回obj.c。对于字节流解码器,它实际上对我很有用,因为我可以写:letwidth=({bytes}=intDecode(bytes)).number;我的问题是我没有在任何地方看到这种语法,并且不想依赖未正确实现或处于提案阶段的东西。 最佳答案 解构赋值没有什么特别之处:它的求值方式与使用=运算符的任何其他赋值

javascript - 递归生成器函数中 yield 后的 *(星号/星号)语法是什么意思?

这个问题在这里已经有了答案:Delegatedyield(yieldstar,yield*)ingeneratorfunctions(3个答案)关闭6年前。假设我创建了一个ES6生成器function*createFibonacciIterator(a=0,b=1){yieldb;yield*createFib(b,b+a);//然后我使用该生成器获得前20个结果letfibber=createFibonacciIterator();for(letii=0;ii如果我将*留在yield*createFib(b,b+a);行中,事情就会中断,这是有道理的,因为我不想要yield一个迭代器

javascript - 在 ES6 中使用相同的参数名称作为其默认参数

这段ES6代码:constlog=()=>console.log('hi');constparent=(log=log)=>log();parent();转译为:varlog=functionlog(){returnconsole.log('hi');};varparent=functionparent(){varlog=arguments.length给出错误:returnlog();^TypeError:logisnotafunction问题是这一行:constparent=(log=log)=>log();因为参数名称与其默认参数相同。这个有效:constlog=()=>cons

javascript - 在 ES6 之前的 Typescript 中实现 Iterator<T> 的推荐方法

这个问题在这里已经有了答案:typescript:makeclassobjectsiterable(3个答案)关闭5年前。我有一个项目,其中包含许多理想情况下会实现Iterable的类和/或Iterator接口(interface)。但是我似乎找不到这些接口(interface)的标准TypeScript定义(例如在typescript-collections或一些类似的包中)。我知道这些在ECMAScript6中通过Symbol.iterator有所标准化。机制,但我的目标是ECMAScript5,并且在可预见的future将保持不变。我能否以某种方式获得这些接口(interface

javascript - 多维数组的 indexOf 语法?

indexOf()遍历多维数组的语法是什么?例如:varx=[];//dosomethingx.push([a,b]);x.indexOf(a)//??我想找到“a”并用“b”做一些事情。但它不起作用...由于此方法本身应该是迭代的,所以我认为使用任何其他迭代都不是一件好事。目前我使用2个简单的数组来模拟这个,但我想这应该也能以某种方式工作...... 最佳答案 简单地说:indexOf()不是这样工作的。如果您执行以下操作,它可能会起作用:varx=[];//dosomethingz=[a,b];x.push(z);x.index

javascript - 对象方法上的 setTimeout - ES5 绑定(bind)或关闭?

假设我正在使用HTML5Canvas制作一些动画。如果我正在寻找动画对象的方法,这将是更可取的,性能明智的(假设我不关心IE8):setTimeout(this.render.bind(this),15);或varself=this;setTimeout(function(){self.render()},15);我的特殊案例还不够强烈,无法真正在视觉上产生影响;我只是想找出最佳实践。我认为用bind创建一个新函数比创建一个闭包的开销要小,但我想请教专家。 最佳答案 JavaScript性能问题很棘手,因为各种引擎的性能特征大相径庭

javascript - ES6 继承 : uses `super` to access the properties of the parent class

Javascript的super关键字,当我在Chrome、Babel、TypeScript上运行代码时,我得到了不同的结果。我的问题是哪个结果是正确的?规范的哪一部分定义了这种行为?以下代码:classPoint{getX(){console.log(this.x);//C}}classColorPointextendsPoint{constructor(){super();this.x=2;super.x=3;console.log(this.x)//Aconsole.log(super.x)//B}m(){this.getX()}}constcp=newColorPoint();

javascript - Google Canary 浏览器是否支持 ES6 的生成器?

我需要测试/工作属于ES6草案的生成器。要继续工作,我需要一个浏览器(在我的例子中)。由于GoogleCanary严格针对开发人员,所以它现在是否支持生成器?我的操作系统是Windows7。 最佳答案 是的,在旗帜后面。另见featuredashboardentry和V8bug.导航到chrome://flags/#enable-javascript-harmony以启用它。 关于javascript-GoogleCanary浏览器是否支持ES6的生成器?,我们在StackOverflo

javascript - 为简单的数学运算生成语法树

我正在尝试为具有简单数学运算符(+、-、*、/和括号)的给定字符串生成语法树。给定字符串“1+2*3”:它应该返回一个像这样的数组:["+",[1,["*",[2,3]]]]我做了一个函数来转换[1,”+”,2,”*”,3中的“1+2*3”。问题是:我不知道优先考虑某些操作。我的代码是:functionisNumber(ch){switch(ch){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case'.':returntrue;break;default:returnf

javascript - 调用异步静态函数时出现语法错误

我正在尝试使用Node8.3.0的async/await,我遇到了一些静态函数问题。MyClass.jsclassMyClass{staticasyncgetSmthg(){returntrue;}}module.exports=MyClassindex.jstry{constresult=awaitMyClass.getSmthg();}catch(e){}使用这段代码,我在MyClass上得到了一个SyntaxError:Unexpectedtoken。这是为什么?不能将静态函数与await一起使用,还是我弄错了?谢谢 最佳答案