草庐IT

ecmascript-6

全部标签

javascript - 为什么 let 语句的行为与 var 如此不同?

我知道let是声明block作用域局部变量,但为什么它不像var那样支持重新声明和提升?这个限制的设计目的是什么?(function(){'usestrict';alert(a);//undefinedvara;})();(function(){'usestrict';alert(a);//errorleta;})();(function(){'usestrict';vara;vara;alert(a);//undefined})();(function(){'usestrict';leta;leta;//erroralert(a);})(); 最佳答案

javascript - 将方法设为静态有什么好处吗?

我正在使用Webstorm并编写了一个React组件,我的代码如下所示:asynconDrop(banner,e){banner.classList.remove('dragover');e.preventDefault();constfile=e.dataTransfer.files[0],reader=newFileReader();const{dispatch}=this.props;constresult=awaitthis.readFile(file,reader);banner.style.background=`url(${result})no-repeatcenter`

javascript - JSDoc:箭头函数参数

我正在尝试使用JSDoc(EcmaScript2015、WebStorm12Build144.3357.8)记录我的代码。我有一个箭头函数,我想记录它的参数。这两个示例有效(我得到自动完成):/**@param{Number}num1*/vara=num1=>num1*num1;//------------------------------/**@param{Number}num1*/vara=num1=>{returnnum1*num1;};但是当我想在forEach函数中记录箭头函数时,例如,自动完成功能不起作用(以下所有情况):/**@param{Number}num1*/[]

javascript - 不提供文件扩展名就无法导入 TypeScript 模块

我是TypeScript的新手,我希望我应该能够导入我的TS文件而无需指定它们是TS文件。我必须做import{sealed}from"./decorators/decorators.ts";而不是我想要的是正确的方式这是import{sealed}from"./decorators/decorators";这会导致错误表明它只查找以.js或.jsx结尾的文件我的tsconfig.json看起来像这样{"compileOnSave":true,"compilerOptions":{"module":"commonjs","moduleResolution":"node","jsx":"

javascript - 导入是否会创建导入库的新副本?

我正在使用webpack+vue-loader来创建vuejs应用程序。我有多个组件的.vue文件。当我写这样的东西时:从'lodash'导入_在ComponentA.vue和ComponentB.vue的script部分,这会创建两个单独的lodash副本还是简单地导入引用资料? 最佳答案 导入ES6模块的任何部分(默认或命名导出)都会产生一个不可变绑定(bind)。CommonJSmodulesexportvalues,whileES6modulesexportimmutablebindings.Thisblogpostexpl

javascript - Lodash 与 JavaScript 内置的 map、reduce、filter

我想知道为这3个函数[map(),reduce(),filter()包含Lodash是否更好]或者只是使用它们的ES6版本。我更喜欢使用Lodash函数,它对我的​​用例来说更简单一些。但是,我知道使用ES6函数可能会带来性能优势。还想知道Lodash是否比ES6更向后兼容?关于如何测试我的实现性能的建议?关于继续使用Lodash还是使用ES6的建议? 最佳答案 Lodash是一个很好的工具,如果你有更复杂的算法,它更易读等。它内置了很多任务的函数,这些任务在原生ES6中实现起来并不那么容易,它真的很方便并且可以让你免于头痛。但是对

javascript - React组件属性中es6模板字符串

我可以使用双引号和单引号连接我的动态变量,但模板字符串更清晰。我得到了一个意想不到的token,有什么线索吗?...return()... 最佳答案 您需要将其更改为以下代码。return() 关于javascript-React组件属性中es6模板字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/44426933/

javascript - 如何从 ES6 中的解析器中获取 xml2js 结果?

我正在Node中构建一个服务器,它将搜索一个文件夹以查看是否存在XML文件(glob),如果存在,则将(fs)中的文件作为JSON对象(xml2js)读取并最终存储它在某处的数据库中。我想将结果从解析器中取出并放入另一个变量中,这样我就可以用数据做其他事情。据我所知,某些东西正在同步运行,但我无法弄清楚如何停止它并让我等到它完成后再继续前进。我将我的功能从app.js分离到一个Controller中:app.controller.jsconstfs=require('fs-extra');constglob=require('glob');constxml2js=require('xm

javascript - 在 componentWillUnmount 中停止计时器

我正在制作一个小倒数计时器作为React练习(为我自己,而不是类或其他任何东西)并且一切正常(尽管笔记总是受欢迎的)除了我注意到即使在组件完成后它也会继续倒计时卸载。所以现在我想让它在卸载时停止,但似乎做不对。卸载时停止setInterval的协议(protocol)是什么?这是我拥有的:classTimerValextendsComponent{constructor(props){super(props)this.state={timeToGo:30}}secondsToMMSS(seconds){//returns"mm:ss"}componentDidMount(){setIn

javascript - ES6 Promise 等待 K out N promises to resolve

varp1=newPromise((resolve,reject)=>{setTimeout(resolve,1000,'one');});varp2=newPromise((resolve,reject)=>{setTimeout(resolve,2000,'two');});varp3=newPromise((resolve,reject)=>{setTimeout(resolve,3000,'three');});Promise.all([p1,p2,p3]).then(values=>{console.log(values);},reason=>{console.log(rea