草庐IT

es6-features

全部标签

javascript - 如何在 ES6 中获取 Set 的第一个元素(EcmaScript 2015)

在ES6中,我们如何快速获取元素?在MDNSyntaxforSet,我没有找到答案。 最佳答案 他们似乎没有公开可从实例化对象访问的列表。这是来自EcmaScript草案:23.2.4PropertiesofSetInstancesSetinstancesareordinaryobjectsthatinheritpropertiesfromtheSetprototype.Setinstancesalsohavea[[SetData]]internalslot.[[SetData]]是Set持有的值列表。一个可能的解决方案(有点昂贵)

javascript - ES6 箭头函数和使用 Function.prototype.bind 绑定(bind)的函数之间有什么区别(如果有的话)?

在我看来,在ES6中,以下两个函数非常几乎相同:function(){returnthis;}.bind(this);()=>{returnthis;};最终结果似乎是一样的:箭头函数生成一个JavaScript函数对象,其this上下文绑定(bind)到与创建它们的this相同的值。显然,在一般意义上,Function.prototype.bind比箭头函数更灵活:它可以绑定(bind)到本地this以外的值,并且它可以在任何时间点绑定(bind)任何函数的this,可能在最初创建之后很长时间。但是,我不是在问bind本身与箭头函数有何不同,我是在问箭头函数与使用this立即调用bi

javascript - 如何在 ES6 中 stub 导出函数?

我有文件foo.js:exportfunctionbar(m){console.log(m);}还有另一个使用foo.js、cap.js的文件:import{bar}from'foo';exportdefaultm=>{//SomelogicthatIneedtotestbar(m);}我有test.js:importcapfrom'cap'describe('cap',()=>{it('shouldbar',()=>{cap('some');});});不知何故,我需要在测试中覆盖bar(m)的实现。有什么办法吗?附言我使用babel、webpack和mocha。

javascript - ES6 解构和模块导入

我的印象是这种语法:importRouterfrom'react-router';var{Link}=Router;最终结果与此相同:import{Link}from'react-router';谁能解释一下区别是什么?(我原本以为是一个ReactRouterBug。) 最佳答案 import{Link}from'react-router';从react-router导入一个namedexport,例如exportconstLink=42;importRouterfrom'react-router';const{Link}=Rout

javascript - 'typeof varName === ' 未定义的 ES2015/2016 方式?

我现在沉迷于ES2015+奢侈的几个项目,想知道我是否可以摆脱在新仙境中检查undefined的讨厌拐杖。在ES2015+中是否有更短但仍然准确的typeofvarName==='undefined'方法?我当然可以使用defaultparameters但这也感觉像是一项不必要的任务。functioncoolFn(a=null){if(a===null)console.log("noasupplied");} 最佳答案 只需检查varName===undefined。在旧版浏览器中,可以将替代值分配给全局undefined变量,从而

javascript - 用于导入 commonjs/amd 模块的新 es6 语法,即 `import foo = require(' foo')`

以前我可以这样做:importfoo=require('foo');但现在TypeScript(1.5)支持es6模块语法,在ES6模块语法中实现相同功能的正确方法是什么。 最佳答案 正确的方法是继续使用旧的导入语法。新的导入语法仅适用于ES模块,旧的导入语法适用于ES6之前的模块。两者是有区别的,故意如此。import*asfoofrom'foo'导入模块'foo'的所有属性,它不导入默认值asfoo。Fromthedesignerofthefeature:导出默认声明总是声明一个名为default的导出成员,并且总是作为对exp

javascript - ES6 `fetch is undefined`

我正在使用ES6和Babel构建一个站点。在脚本文件中,我需要对服务器上的服务进行ajax调用。为此,我这样做:fetch('url').then(response=>response.json()).then(supervisoryItems=>doSomething(supervisoryItems))在GoogleChrome中这工作得很好,但它在Firefox或IE上不起作用(我收到错误fetchisundefined)。在Google上搜索我发现这应该可以解决它:importpromisefrom'es6-promise'promise.polyfill()遗憾的是它没有改变

javascript - 如何对 ES6 `Set` 进行排序?

newSet(['b','a','c']).sort()抛出TypeError:set.sortisnotafunction。如何对Set进行排序以确保特定的迭代顺序? 最佳答案 集合不是有序的抽象数据结构。ASet但是始终具有相同的迭代顺序-元素插入顺序[1],因此当您迭代它时(通过迭代方法,通过调用Symbol.iterator,或通过for..of循环)你总是可以期待的。您始终可以将集合转换为数组并对其进行排序。Array.from(newSet(["b","a","c"])).sort();[...(newSet(["b",

javascript - 创建一个(ES6) promise 而不开始解决它

使用ES6promise,如何在不定义解决逻辑的情况下创建promise?这是一个基本示例(一些TypeScript):varpromises={};functionwaitFor(key:string):Promise{if(keyinpromises){returnpromises[key];}varpromise=newPromise(resolve=>{//ButIdon'twanttotryresolvinganythinghere:(});promises[key]=promise;returnpromise;}functionresolveWith(key:string,

javascript - 是否可以对 ES6 map 对象进行排序?

是否可以对es6映射对象的条目进行排序?varmap=newMap();map.set('2-1',foo);map.set('0-1',bar);结果:map.entries={0:{"2-1",foo},1:{"0-1",bar}}是否可以根据键对条目进行排序?map.entries={0:{"0-1",bar},1:{"2-1",foo}} 最佳答案 根据MDN文档:AMapobjectiteratesitselementsininsertionorder.你可以这样做:varmap=newMap();map.set('2-1