草庐IT

es6-features

全部标签

javascript - 同时导入 ES6 和 ES7 core-js polyfill 有什么用吗?

为Object导入ES6polyfill是否有用或多余?import'core-js/es6/object';还有Object的ES7polyfill?import'core-js/es7/object';ES7polyfill是否涵盖了所有ES6功能,我可以不使用ES6polyfill,还是ES6polyfill添加了ES7polyfill中不存在的功能? 最佳答案 这个答案涉及core-js@2。从core-js@3开始,不再有单独的ES6和ES7前缀。这是由于ECMAScript的开发方式。您可以在core-js@3,babe

javascript - 返回一个等待的值会返回一个 Promise? (es7 异步/等待)

constret=()=>newPromise(resolve=>setTimeout(()=>resolve('somestring'),1000));asyncfunctionwrapper(){letsomeString=awaitret();returnsomeString;}console.log(wrapper());它记录Promise{};为什么它返回一个Promise而不是'somestring'?我正在使用BabelES7预设来编译它。 最佳答案 异步函数返回promise。为了做你想做的事,试试这样的事情wra

javascript - ES6 类的 getter 和 setter 实际上是什么?

ES6类定义中的get和set方法是什么?它们实际上是原型(prototype)属性吗?例如:classPerson{constructor(){};getname(){return'jack';}setname(){//???}}这是否等于Person.prototype.name='jack'?此外,我还看到了使用实例prop的setter示例:classPerson{constructor(){this._name='jack';};getname(){returnthis._name;}setname(val){this._name=val;}}我不想这样做;我想要这样的东西:

javascript - 如何在 ES6 中将长导入语句分成多行?

我的JavaScript(ES6)文件中有一个很长的导入语句:import{A,B,C,D}from'../path/to/my/module/in/very/far/directory/'这样加新行可以吗?import{A,B,C,D}from'../path/to/my/module/in/very/far/directory'如果没有,是否有任何其他方式来编写干净的代码(保留我的代码在80列内)使用Babel以ES6语法导入语句? 最佳答案 这是我使用ESLint进行测试的结果。ESLINT通过importfsfrom'fs'

javascript - ES6 立即调用递归箭头函数

这是我当前的代码:constfn=parameter=>{//if,else...fn(X);};fn(0);现在,我不能使用thisapproach因为我需要使用参数调用该函数,并且它必须可以递归调用。如何重构上述箭头函数使其立即调用并递归调用? 最佳答案 JavaScript为递归函数提供了一个很好的解决方案:命名函数表达式。因此我建议使用它而不是箭头函数:(functionfn(parameter){//if,else...fn(x);})(0); 关于javascript-ES6

javascript - 使用 ES6 + Flow 代替 TypeScript

我正在为JavaScript应用建模。此应用程序的主要功能是使用RESTAPI来配置和显示具有某些自定义输入类型的表单。我正在考虑使用TypeScript利用类型和类。但经过一些谷歌搜索后,我意识到我可以使用JavaScriptES6+Flow获得非常相似的结果。(可能还有Babel)。我的问题是:这两种方法真的很相似还是我搞砸了?在ES6+Flow或TypeScript之间做出正确选择时,我应该考虑什么?感谢您的帮助。 最佳答案 免责声明:我在Flow团队工作。总的来说,我认为Flow更注重稳健性,而Typescript更注重易用

javascript - forEach 在 JSX 中的 es6 映射

我有一个javascript数组,它使用array.map渲染组件。我将此数组切换为es6Map以便能够使用键值对更轻松地查找项目,并将.map切换为forEach在map上。在forEach中,我调用了一个返回React组件的渲染方法,但它没有被渲染。如何在forEach中呈现组件?{resultsByGuid.forEach((result,index)=>{key++;this.renderGalleryItem(result,key);})}这是renderGalleryItem方法:renderGalleryItem=(item,index)=>{const{gridItem

javascript - es6 传播运算符 - mongoose 结果副本

我正在使用mongoDB和mongoose开发一个expressjsAPI。我想在Javascriptes6中创建一个由几个变量和Mongoose请求的结果组成的对象,并希望使用es6传播运算符来实现:MyModel.findOne({_id:id},(error,result)=>{if(!error){constnewObject={...result,toto:"toto"};}});问题在于将扩展运算符应用于结果以一种奇怪的方式转换它:newObject:{$__:{$options:true,activePaths:{...},emitter:{...},getters:{.

javascript - es6 中用于确定调用函数的 arguments.callee 替代方案

这个问题在这里已经有了答案:HowdoyoufindoutthecallerfunctioninJavaScriptwhenusestrictisenabled?(5个答案)关闭2年前。在框架中,我正在开发,我已经构建了允许定义私有(private)和protected属性和方法的机制。我在ES5规范中发现唯一的能力是使用arguments.callee像这样:descriptor.method=function(){if(__callerIsProptected(arguments.callee.caller.caller,cls))returnvalue.apply(this,__

javascript - 如何处理作为 ES6 模块导入的 JavaScript 文件的缓存

旧情以前,如果有可用的新版本,我使用以下方法强制浏览器重新加载我的JavaScript文件。我的HTML是自动生成的(例如使用PHP),因此很容易实现自动化。新情况现在我想使用ES6模块并导入我的常用代码。我的HTML变成:app.js包含导入:import{foo,bar}from'./common.js';问题现在我的问题是:在新场景中如何影响common.js的缓存?我不想在每次编辑common.js时都手动编辑app.js。如果可能的话,我也不想动态生成/预处理我的任何JavaScript文件。 最佳答案 简短版本:只需使用