草庐IT

es6-features

全部标签

javascript - ES2015 模板字符串安全问题

这是来自MDN的引述:TemplatestringsMUSTNOTbeconstructedbyuntrustedusers,becausetheyhaveaccesstovariablesandfunctions.还有一个例子:`${console.warn("thisis",this)}`;//"thisis"Windowleta=10;console.warn(`${a+=20}`);//"30"console.warn(a);//30这里的例子没有显示任何我能看到的漏洞。任何人都可以举一个利用此漏洞的示例吗? 最佳答案 这毫

javascript - Chrome 61 版扩展中的 ES6 模块

这与ES6ModulesInGoogleChromeExtensionDevelopment(unexpectedtoken)不是同一个问题因为这已经过时并且已经回答了。Google发布了一份新闻稿,声称Chrome支持ES6模块。我正在尝试从扩展中加载模块。我可以从普通页面中加载模块,但不能从扩展中加载。这是html,这是扩展上下文中的一个页面:当我打开页面时,我在控制台中看到以下错误消息:Failedtoloadmodulescript:Theserverrespondedwithanon-JavaScriptMIMEtypeof"".StrictMIMEtypecheckingi

javascript - 如何从开发工具控制台使用 ES6 模块

据我所知,如果我创建一个ES6模块,我只能从本身就是一个模块的代码中导入它。这意味着非模块代码,即内联Javascript,或Chrome开发工具控制台永远无法访问模块中的代码。这是真的吗?有没有办法解决这个问题,因为它似乎是一个相当极端的限制。 最佳答案 您可以使用dynamicimport在Chrome的控制台中。import('path/to/module.js').then(m=>module=m)//[doSomething]isanexportedfunctionfrom[module.js].module.doSome

javascript - 使用 Array 对象作为 ES6 Map 的键

我正在尝试将我的代码更新为ES6,因为我正在使用Node4.0,目前为止我非常喜欢它的功能。但是,我对新的ES6Map数据结构有疑问,因为在使用Array作为键时,它的行为与{}不同。我将其用作计数器map。我运行这段代码,我想知道如何使用数组作为Map的键。"usestrict";vara=newMap();a.set(['x','y'],1);console.log(a.get(['x','y']));varb={};b[['x','y']]=1;console.log(b[['x','y']]);它打印出以下内容,第一行应该是1而不是undefined:undefined1原始J

javascript - Babel [karma-babel-preprocessor] 不为 Karma 测试转换 ES6->ES5

我们已经安装了karma,它使用mocha和chai进行测试。我们正在尝试使用karma-babel-preprocessor将babel直接集成到karma中,以将我们的ES6文件转换为ES5以运行。单独使用mocha与babel一起工作,即mocha测试命令,但我们尝试使用karma而不是它不起作用。karma.conf.js片段:frameworks:['mocha','chai'],//preprocessmatchingfilesbeforeservingthemtothebrowser//availablepreprocessors:https://npmjs.org/br

javascript - ES6 模块导出默认语法

我正在使用带有esnext:true选项的es6-module-transpiler、esprima和JSHint。JSHint在我输入时提示:exportdefault={some:'thing',other:'thing'};但是esprima在我使用的时候提示exportdefault{some:'thing',other:'thing'};spec说exportdefaultAssignmentExpression;这让我觉得JSHint需要更新,而esprima正在正常轰炸,因为没有分配。有人可以在这里为我做决定吗? 最佳答案

Javascript ES6 - 映射多个数组

JavaScript6中是否有允许映射多个数组的功能?类似zipper的东西:varmyFn=function(a,b){console.log(a,b);}vararr1=['a','b','c'];vararr2=[1,2,3];arr1.map(myFn,arr2);//imaginarysyntax.//prints://a1//b2//c3 最佳答案 正如其他答案所指出的,这通常称为zip。它可以实现为:letzipped=arr1.map((x,i)=>[x,arr2[i]]);或者作为一个函数,基本上:letzip=(

javascript - 为什么 ES6 类语法控制台日志记录与 ES5 类语法不同?

我正在努力学习更多的ECMAScript6和更好的继承。问题当我控制台注销时bob与daisy它们不同。boblogs__proto__下的原型(prototype),并显示他的run:true;构造函数。在ES6实现中,daisy没有__proto__但是,它仍然可以访问isRunning。为什么?varMan=(function(){"usestrict";functionMan(){this.run=true}Man.prototype.isRunning=function(){console.log('yesssimmarun');};returnMan;})();varbob

javascript - 闭包与 ES6 Let

尝试使用闭包和let在for循环中打印一系列数字:考虑以下示例:for(vari=1;i输出是:101010101010101010闭包:for(vari=1;i输出是:123456789没有闭包,只使用ES6let:for(leti=1;i输出是:123456789试图了解我们是否仍然需要使用IIFEblock的闭包以转向ES6?如果我们真的需要ES6的闭包,有什么好的例子吗? 最佳答案 这是KleoPetrov的一个很好的解释-DoES6ModulesmakethecaseofIIFEsobsolete?IIFE是ES5中最常用

javascript - 创建具有不同范围的 ES6/ESNext 原型(prototype)函数(不是内联函数)

好吧,假设我们有这个:classCar{constructor(name){this.kind='Car';this.name=name;}printName(){console.log('this.name');}}我想做的是定义printName,像这样:classCar{constructor(name){this.kind='Car';this.name=name;}//wewanttodefineprintNameusingadifferentscope//thissyntaxisclose,butis*not*quitecorrectprintName:makePrintN