需要弃用 var`改用es6 let var`么

代码preg_replace以被弃用,如何用preg_replace_callback修改如下代码!ecshop_百度知道
代码preg_replace以被弃用,如何用preg_replace_callback修改如下代码!ecshop
\e mo\\ ;n&cls_&&#92. &#39Deprecated. preg_replace(&quot, &)); ;&#47,如何用preg_replace_callback修改此段代码;n&quot, true)) ;1&#39,$out = &htdocs\;,&#39: The /e&quot, var_export($t;';$k = ' ;\(\. &ECShop&#92.php on line 494此代码需要修改,]+)&#47, use preg_replace_callback instead in G;stripslashes(trim(''\
代码preg_replace以被弃用;&#39?php &#92:\&;xampp&#92: preg_replace();includes\$[^
提问者采纳
;\'1', true)) ;';stripslashes(trim(&#39?php \ ;'$[^;n&&#92. &n& ;, &&lt. ';));$k = '&#92. preg_replace_callback(&quot,' ;(\\\&#92,]+)/e&quot$out = &&#47, var_export($t;&quot
提问者评价
其实我也研究出来了,但是还是感谢大神耐心回答。。
其他类似问题
为您推荐:
ecshop的相关知识
其他1条回答
这个建议你覆盖下原始文件看看
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ES4 的故事相当复杂... 我一时八卦心起整理了一下:&br&&br&&ul&&li&当年的 TC39 还叫 TC39-TG1&br&&/li&&li&2005 年开始弄 ES4 的主要是 Brendan Eich 和开发了 AS3 的 macromedia(后来是收购 macromedia 的 Adobe)&br&&/li&&li&M$ 和 Yahoo(主要是 Douglas Crockford)一开始是表示合作的&br&&/li&&li&2007 年,BE 和 Adobe 已经在 ES4 上花了两年时间,但 M$ 和 DC 突然表示觉得 ES4 太过庞大,并添加了太多他们不想要的东西。这里具体的理由我们无从得知,只能做一些揣测:DC 的龟毛大家都知道的,从 JavaScript: The Good Parts 就可以看出他的偏好和 ES4 出入很大。M$ 在 ES4 的制定过程中并没有积极参与,可能是因为与会的 Pratap Lakshman 和上层的沟通不足,然后某天跟上层一汇报,上层觉得 ES4 和 ES3 差别过大,实现起来难度大,而且会导致他们丧失对规范的控制权,所以突然就决定抵制 ES4 了。&br&&/li&&li&2007 年 4月,DC 和 M$ 开始平行起草另一个提案,一开始叫 ES3.1,也就是后来的 ES5,整体上是一个更为保守、渐进的提案。当时 TG-1 内部对 3.1 的定位有疑问,但允许了其存在。&br&&/li&&li&BE 对 ES4 的前景感到担忧,2007 年 10 月发布了 ES4 提案预览。M$ 和 DC 认为 BE 操之过急,发表了一些负面评论,双方闹翻。BE 对 M$ 的行为非常光火,并且认为 M$ 在背地里运作引导业界舆论反对 ES4。&br&&/li&&li&ES4 难产,与此同时,随着 ajax 概念的提出,业界开始冒出各种 js 库,对 js 工程化开始进行初步的探索。&br&&/li&&li&2009 年,各方最终同意将 ES3.1 改为 ES5 并正式发布。同时,开始进行下一个版本的规范 Harmony/ES6 的起草。&br&&/li&&/ul&&br&--- 历史的分割线 ---&br&&br&时至今天,我们会发现 ES6 的业界环境和 ES4 有很多不同:&br&&br&&ul&&li&当年反对 ES4 的 M$/Yahoo 话语权已今不如昔,而且本身的态度也已经改变。IE 的市场份额持续下跌,在实现上也已长期处于追赶而非当年引领的地位。Yahoo 在互联网界的地位一落千丈,DC 在 TC39 也不像当年那么活跃。&br&&/li&&li&Google 伴随着 Chrome 飙升的占有率,以及靠着 web 发家的背景强势加入 TC39,现在可能是最有话语权也是最积极的玩家,因为推动 web 这个平台和 Google 本身的市场空间直接相关。&br&&/li&&li&整体上 web 前端应用化、工程化的趋势不可逆转,对于支持工程化的语言特性需求也确实比当年高。随着 Node.js 的爆发,JS 在后端的需求增长的同时也开始暴露出语言本身对大型工程的不足。根本上来讲,就是 ES4 的时候业界对 js 工程化的需求没有那么高,所以 ES4 那些考量受众不足。&/li&&li&当年 ES4 未能发布的一个原因是步子过大的同时,没有有效的对新特性进行实践考验的方法。这一点在今天借助各类 transpiler 得以实现。比如 CoffeeScript 的一些特性大家用了都说好,那么 TC39 就可以放心地采用到 ES6 当中。TypeScript 的 class 大家用着觉得不错,那么也可以采用。同理,业界对模块化的探索比如 AMD 和 CommonJS 也对 ES6 module 的最终定稿有着巨大的影响。简言之就是没有实践的检验你很难光靠嘴巴说服所有人。&br&&/li&&/ul&&br&综上,个人认为 ES6 不太可能会重蹈 ES4 的覆辙(目前的计划发布时间是 2015 年 6 月)&br&&br&---&br&&br&References:&br&&br&&a href=&///?target=http%3A////the-story-behind-es4/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Story Behind ES4&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A//www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&A Short History of JavaScript&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dmeetings%3Aminutes_mar_21_2007& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&meetings:minutes_mar_21_2007 [ES Wiki]&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A//wiki.ecmascript.org/doku.php%3Fid%3Dmeetings%3Aminutes_sep_27_2007& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&meetings:minutes_sep_27_2007 [ES Wiki]&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///2007/11/es4-news-and-opinion/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Brendan Eich&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///blog//premature-standardization/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Only Thing We Have To Fear Is Premature Standardization&i class=&icon-external&&&/i&&/a&
ES4 的故事相当复杂... 我一时八卦心起整理了一下:当年的 TC39 还叫 TC39-TG12005 年开始弄 ES4 的主要是 Brendan Eich 和开发了 AS3 的 macromedia(后来是收购 macromedia 的 Adobe)M$ 和 Yahoo(主要是 Douglas Crockford)一开始是表示合作的2007 年…
首先要指出的就是FireFox在对ES6的支持上一直都比Chrome浏览器要领先,主要是因为,ES6的很大推动力来自于FF那帮JS元老(包括JS之父Brendan Eich等)&br&&br&当年ES4难产,主要就是因为FF帮那边的人对语法改动太过激进,导致在ES4标准制定的时候冲突不断,所以最后才给下一代ES定了个harmony(和谐)的代号。&br&&br&Firefox在ES规范之前就已经做了很多私有的语法制定,比如说迭代器,现在可以给对象指定个Symbol.iterator的key来实现一个迭代器,而FF很早就已经实现了形如obj[&@@iterator&]=function(){}的迭代器。&br&&br&所以ES6的标准,firefox的SpiderMonkey是实现最迅速的,而chrome的V8,却一直比较反复,特别是像Proxy这种特性,V8在大约一年半以前临时实现过一种,用了两个版本以后,突然彻底下架,然后一年多以来,这个Proxy的特性就一直没加回来,包括计划列表里都没有这玩意。&br&&br&需要指出的是,题图里关于ES6的支持对比,firefox丢分在于没有支持class关键字,而Edge13却完整支持了ES6 class的语法糖,包括super。&br&&br&其实class关键字一直存在于firefox的夜间版上面,可惜的是不知道什么原因,已经过了这么长的时间了,FF也没有把class移植到正式版上面。&br&&br&其他FF相比于edge13丢分的在于内置对象的子类支持,就是形如class A extends Function这种,这个没的说,Edge13确实是领先其他浏览器。&br&&br&但FF也有Edge13没有支持的一些特性,典型的比如:函数定义时的参数默认值,&!--var a =1;--&这种HTML注释JS的手段等等。&br&&br&更何况FF还有一个很省事的语法糖:解构,这个解构语法就是FF那帮人造出来的,所以他们实现的最早,而其他浏览器也跟进的最慢,Edge13貌似现在也还未实现。&br&&br&所以总体来说,这两个浏览器在特性支持上基本上在持平状态,FF如果把class从夜间版弄到正式版的话,就可以覆盖到90%了。&br&&br&=================&br&&br&然后再来说说chrome和chrome家的v8,由于我常用node.js,所以对V8很关注,经常去v8的官方blog上逛逛,不得不说,v8对于ES6特性实现,是慢于edge和firefox,也就只能和safari家的JAVASCRIPT CORE比一比了。&br&&br&首先是之前去掉后一直不加的Proxy,这个Proxy可以做很多魔法效果,比如说实现php那种__get__或者是ruby的method_missing,或者是实现单元测试里的mock,在很多场景上都能省事的,然后V8就是任性,开发蓝图上也对这个只字不提了。&br&&br&然后是箭头函数,说来奇怪,在chrome的某一个版本上,它猛地实现了箭头函数这个特性,然后下一个版本直接取消了,随后一直到V8 3.5的时候才正式加上去,这个离其他浏览器实现箭头函数,已经差了一年时间了,node开发者很多都用coffeescript或者typescript去了……&br&&br&然后是解构,至今还未实现。&br&&br&然后是最近几个版本的作为:先是实现个三点号实参调用,也就是func(...arr),这个在V8 4.6的时候加入的唯一ES6新特性,然后V8 4.7加入的是三点号形参定义,也就是function func(...args){}这种,然而参数定义默认值这些特性,估计不知道哪年能实现。&br&&br&然而node.js绑了V8已经导致了极难替换的局面,倒不是因为语言的引擎难以替换,而是周边的大量类库难以替换,所以node这边才会有一个nan的项目,让C/C++扩展能顺应V8那种快速变更API的流氓作法,而V8的API变化很快,有时候就为了改个名字…
首先要指出的就是FireFox在对ES6的支持上一直都比Chrome浏览器要领先,主要是因为,ES6的很大推动力来自于FF那帮JS元老(包括JS之父Brendan Eich等)当年ES4难产,主要就是因为FF帮那边的人对语法改动太过激进,导致在ES4标准制定的时候冲突不断,所以最后…
正好今天(日)晚间我到 &a data-hash=&9d97c714ff758f4437c3c& href=&///people/9d97c714ff758f4437c3c& class=&member_mention& data-editable=&true& data-title=&@Roy Li& data-tip=&p$b$9d97c714ff758f4437c3c&&@Roy Li&/a&的公司做客交流。我就说今年是非常有意义的一年——2015年是Web的25岁生日,也是JavaScript语言的20岁生日;而今天(美国时间日)更是一个非常有意义的日子。一个是ES2015规范 [1] 正式发布,另一个就是&a href=&///?target=https%3A///WebAssembly/design/blob/master/HighLevelGoals.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WebAssembly&i class=&icon-external&&&/i&&/a&项目的公布 [2] 。&br&&br&这些新的规范对于JS和Web的未来,对于前端领域的未来,会有&b&颠覆性&/b&的影响。&br&&br&当然这种影响是互相的、持续的。或者说,具体到题主所问的一个版本的spec正式发布这件事情,本身的意义并没有那么大,更重要的是整个语言持续发展的进程——只是对于JS社区之外的人看来,ES2015的正式发布可以视作一个里程碑的标志。&br&&br&&br&我在今年4月的QConBeijing上的演讲《&a href=&///?target=http%3A//johnhax.net/2015/es6-in-action/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ES6 in Action&i class=&icon-external&&&/i&&/a&》[3] 的前半部分说明了ES2015在技术层面上的影响。&br&&br&但更重要的是&b&生态&/b&层面上的影响。在QCon会间的访谈 [4] 中,我聊了一些对JS语言生态的具体看法;且我将在7月的深JS(&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&)上对此做更详细深入的探讨,目前暂定的演讲标题是《&b&JavaScript: The World's Best Programming Language&/b&》[5] ,欢迎大家一起来讨论。&br&&br&&br&--&br&[1] &a href=&///?target=http%3A//www.ecma-international.org/ecma-262/6.0/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&ecma-international.org/&/span&&span class=&invisible&&ecma-262/6.0/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&[2] &a href=&///?target=https%3A///2015/06/from-asm-js-to-webassembly/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/2015/06&/span&&span class=&invisible&&/from-asm-js-to-webassembly/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&[3] 视频在此:&a href=&///?target=http%3A//q.com/cn/presentations/es6-actual-combat& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/cn/presentati&/span&&span class=&invisible&&ons/es6-actual-combat&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 。很遗憾没有讲稿同步,请大家自己打开正文里的slide链接手动翻页。后面的代码演示也没有在视频里展示,(这是QCon演讲录制的很大问题,还有许多其他演讲视频缺了现场代码演示根本没法看,所以有可能的话还是到现场看吧!)也只能请大家自己打开这个repo:&a href=&///?target=https%3A///hax/es6-in-action& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hax/es6-in-action · GitHub&i class=&icon-external&&&/i&&/a&对照着看。&br&[4] 视频在此:&a href=&///?target=http%3A//q.com/cn/interviews/interview-with-heshijun-talk-javascript-achievements& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/cn/interviews&/span&&span class=&invisible&&/interview-with-heshijun-talk-javascript-achievements&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 。因为前一天睡眠不够,有少许口误,比如“JS发展10年”应为“20年”等,敬请谅解。22分05秒开始是谈JS的部分。&br&[5] 如此不友善的题目,但开喷之前,请参考我在5年前的文章《&a href=&///?target=http%3A///blog/653499& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我为什么是DC黑─Why I disagree with Douglas Crockford&i class=&icon-external&&&/i&&/a&》对当时JS生态的看法,以及此答案 &a href=&/question//answer/& class=&internal&&ECMAScript 6 会重蹈 ECMAScript 4 的覆辙吗? - 贺师俊的回答&/a& 中对JavaScript过往历史的看法。
正好今天(日)晚间我到 的公司做客交流。我就说今年是非常有意义的一年——2015年是Web的25岁生日,也是JavaScript语言的20岁生日;而今天(美国时间日)更是一个非常有意义的日子。一个是ES2015规范 [1] 正式发布,另一个就是
&b&先把问题贴一下:&/b&&br&&br&Promise的队列与setTimeout的队列的有何关联?&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&setTimeout&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&)},&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&k&&new&/span& &span class=&nx&&Promise&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&resolve&/span&&span class=&p&&){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span&&span class=&p&&(&/span& &span class=&kd&&var&/span& &span class=&nx&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span& &span class=&p&&;&/span& &span class=&nx&&i&/span&&span class=&o&&&&/span&&span class=&mi&&10000&/span& &span class=&p&&;&/span& &span class=&nx&&i&/span&&span class=&o&&++&/span& &span class=&p&&){&/span&
&span class=&nx&&i&/span&&span class=&o&&==&/span&&span class=&mi&&9999&/span& &span class=&o&&&&&/span& &span class=&nx&&resolve&/span&&span class=&p&&()&/span&
&span class=&p&&}&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&p&&}).&/span&&span class=&nx&&then&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span&
&span class=&p&&});&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&);&/span&
&/code&&/pre&&/div&为什么结果是:&br&&div class=&highlight&&&pre&&code class=&language-text&&1,2,3,5,4
&/code&&/pre&&/div&而不是:&br&&div class=&highlight&&&pre&&code class=&language-text&&1,2,3,4,5
&/code&&/pre&&/div&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&不想看故事的,直接看结论在这。&br&&br&&b&原因:&/b&&br&有一个事件循环,但是&b&任务队列可以有多个&/b&。&br&整个script代码,放在了macrotask queue中,setTimeout也放入macrotask queue。&br&但是,promise.then放到了另一个任务队列&b&microtask queue&/b&中。&br&这两个任务队列执行顺序如下,取1个macrotask queue中的task,执行之。&br&然后把所有&b&microtask queue&/b&顺序执行完,再取macrotask queue中的下一个任务。&br&&br&&p&代码开始执行时,所有这些代码在macrotask
queue中,取出来执行之。&/p&&p&后面遇到了setTimeout,又加入到macrotask queue中,&/p&&p&然后,遇到了promise.then,&b&放入到了另一个队列&/b&&b&microtask queue&/b&。&/p&&p&等整个execution context
stack执行完后,&/p&&p&下一步该取的是&b&microtask queue&/b&中的任务了。&/p&&br&&p&因此promise.then的回调比setTimeout先执行。&/p&&br&(下面,多图,多坑,多水。。。危险。。。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&本来我是这样以为的:&/b&&br&&br&因为promise.then既可以在pending的时候注册回调,也可以在fullfill状态注册回调。&br&在pending的时候,注册的是异步回调。而在fullfill状态,注册的是同步回调。&br&只有异步回调才会依赖任务队列,而同步回调马上执行。&br&&br&题主这种情况,注册的是同步回调。&br&&br&注意,new Promise是同步的,会马上执行function参数中的事情。&br&等function参数执行完,new Promise才返回一个promise实例对象。&br&这时候再调用then,其实是已经fullfill了。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&然而,我错了。&/b&&br&&br&感谢 &a data-hash=&9a8a93dc38bfeab2bb79e& href=&///people/9a8a93dc38bfeab2bb79e& class=&member_mention& data-editable=&true& data-title=&@richard& data-tip=&p$b$9a8a93dc38bfeab2bb79e&&@richard&/a& 指正。&br&因为,如果promise.then注册的是同步回调的话,5应该比3先执行。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&那好吧,&b&从零开始了,重新分析问题&/b&。&br&&br&老老实实翻开规范《ECMAScript(R) 2015 Language Specification》,搜setTimeout。&br&纳尼?没有。&br&&br&想起来了,这是window对象的东西,跟&b&浏览器宿主环境&/b&有关,不属于EcmaScript范围。&br&那怎么搞,每个浏览器难道自己随便实现吗?谷歌了一把,找到了这个:&br&&a href=&///?target=http%3A///questions/8852198/settimeout-if-not-defined-in-ecmascript-spec-where-can-i-learn-how-it-works& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&javascript - setTimeout(): If not defined in EcmaScript spec, where can I learn how it works?&i class=&icon-external&&&/i&&/a&&br&原来HTML5规范中还是有介绍的。&a href=&///?target=http%3A//www.w3.org/TR/html5/webappapis.html%23timers& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&6.4 Timers&i class=&icon-external&&&/i&&/a&&br&&br&查了查setTimeout,似乎没什么收获,那再看看HTML的事件循环吧。&br&&a href=&///?target=http%3A//www.w3.org/TR/html5/webappapis.html%23event-loops& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&6.1.4 Event loops&i class=&icon-external&&&/i&&/a&&br&&br&&b&一个浏览器环境,只能有一个事件循环&/b&&br&&img src=&/f7cabad79a3fd52b5d9de3df14791aba_b.png& data-rawwidth=&578& data-rawheight=&175& class=&origin_image zh-lightbox-thumb& width=&578& data-original=&/f7cabad79a3fd52b5d9de3df14791aba_r.png&&&br&&b&而一个事件循环可以多个任务队列&/b&&br&&img src=&/cdbf1ab0e475d630cf277d8b2b4ae333_b.png& data-rawwidth=&593& data-rawheight=&341& class=&origin_image zh-lightbox-thumb& width=&593& data-original=&/cdbf1ab0e475d630cf277d8b2b4ae333_r.png&&&br&&b&关于任务源:&/b&&br&&img src=&/dd563c9e6dcdd7ddfcf5aa_b.png& data-rawwidth=&609& data-rawheight=&251& class=&origin_image zh-lightbox-thumb& width=&609& data-original=&/dd563c9e6dcdd7ddfcf5aa_r.png&&&br&它指出,一个浏览器环境(unit of related similar-origin browsing contexts.)只能有一个事件循环(Event loop),而一个事件循环可以多个任务队列(Task queue),每个任务都有一个任务源(Task source)。&br&相同任务源的任务,只能放到一个任务队列中。&br&不同任务源的任务,可以放到不同任务队列中。&br&(同一个任务队列,能否容纳不同任务源的任务,没说)&br&又举了一个例子说,客户端可能实现了一个包含鼠标键盘事件的任务队列,还有其他的任务队列,而给鼠标键盘事件的任务队列更高优先级,例如75%的可能性执行它。这样就能保证流畅的交互性,而且别的任务也能执行到了。但是,同一个任务队列中的任务必须按先进先出的顺序执行。&br&&br&&b&结论:可以有多个任务队列,目的想必是方便调整优先级吧。&/b&&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&回到&b&EcmaScript规范&/b&上来,&br&&b&76页 8.4 Jobs and Job Queues&/b&&br&&img src=&/bc214f76ea1b_b.png& data-rawwidth=&660& data-rawheight=&178& class=&origin_image zh-lightbox-thumb& width=&660& data-original=&/bc214f76ea1b_r.png&&它指出,任务队列(Job queue)是一个先进先出的队列,每一个任务队列是有名字的,至于有多少个任务队列,取决于实现。每一个实现至少应该包含以上两个任务队列。&br&&br&以下又强调了,单独的任务队列中的任务总是按先进先出的顺序执行,但是&b&不保证多个任务队列中的任务优先级,具体实现可能会交叉执行&/b&。&br&&img src=&/0ce8a5f7f5abd8f9ddcddbe3_b.png& data-rawwidth=&662& data-rawheight=&83& class=&origin_image zh-lightbox-thumb& width=&662& data-original=&/0ce8a5f7f5abd8f9ddcddbe3_r.png&&&br&哪里用到这个任务队列了呢,Promise就用了,492页。&br&&img src=&/fed4b5f3e12af_b.png& data-rawwidth=&657& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&657& data-original=&/fed4b5f3e12af_r.png&&题主的问题,属于fulfilled的情况,如图所示。&br&会把一个任务放到名为“PromiseJobs”的任务队列中。&br&&br&&b&结论:EcmaScript的Job queue与HTML的Task queue有异曲同工之妙。它们都可以有好几个,多个任务队列之间的顺序都是不保证的。&/b&&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&那为什么setTimeout会后执行呢,可能是它所属的任务队列优先级比较低吧。&/b&&br&我之前对这个问题产生了误解,主要是规范研究的不仔细,以为任务队列只有一个。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&更新一:&/b&&br&&br&关于和tick的关系,群里的小伙伴们尝试了各种办法,在昵称为“&b&第七片魂器&/b&”大神的指点下,&br&我们先后用&b&setImmediate&/b&和&b&process.nextTick&/b&进行了实验。(node.js。。。&br&&br&&div class=&highlight&&&pre&&code class=&language-js&&&span class=&nx&&setImmediate&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&);&/span&
&span class=&p&&},&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&nx&&setTimeout&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&2&/span&&span class=&p&&);&/span&
&span class=&p&&},&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&k&&new&/span& &span class=&nx&&Promise&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&resolve&/span&&span class=&p&&){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&);&/span&
&span class=&nx&&resolve&/span&&span class=&p&&();&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&);&/span&
&span class=&p&&}).&/span&&span class=&nx&&then&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&);&/span&
&span class=&p&&});&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&6&/span&&span class=&p&&);&/span&
&span class=&nx&&process&/span&&span class=&p&&.&/span&&span class=&nx&&nextTick&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(){&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&7&/span&&span class=&p&&);&/span&
&span class=&p&&});&/span&
&span class=&nx&&console&/span&&span class=&p&&.&/span&&span class=&nx&&log&/span&&span class=&p&&(&/span&&span class=&mi&&8&/span&&span class=&p&&);&/span&
&/code&&/pre&&/div&&br&结果:3 4 6 8 7 5 2 1&img src=&/e9f416bbb15d3fdd62e34c3f3aad4ac4_b.png& data-rawwidth=&29& data-rawheight=&136& class=&content_image& width=&29&&&br&事件的注册顺序如下:&br&&b&setImmediate - &/b&&b&setTimeout - &/b&&b&promise.then - process.nextTick&/b&&br&&br&因此,我们得到了优先级关系如下:&br&&b&process.nextTick & promise.then & setTimeout & setImmediate&/b&&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&更新二:&/b&&br&&br&后来讨论进入了白热化,大神“&b&東方(成都-潜水猪)&/b&”提到了&b&promsieA+规范&/b&。&br&&br&&a href=&///?target=http%3A//.cn/article/66566& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&图灵社区 : 阅读 : 【翻译】Promises/A+规范&i class=&icon-external&&&/i&&/a&&br&&img src=&/84adf855dd89eabbd643_b.png& data-rawwidth=&640& data-rawheight=&509& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/84adf855dd89eabbd643_r.png&&&br&然而,后面的&b&译者注&/b&有问题,与前面的优先级实验不符。&br&&b&process.nextTick & promise.then & setTimeout & setImmediate&/b&&br&&img src=&/51f4d8eefaf2a09c857e_b.png& data-rawwidth=&602& data-rawheight=&258& class=&origin_image zh-lightbox-thumb& width=&602& data-original=&/51f4d8eefaf2a09c857e_r.png&&又翻到了原版:&a href=&///?target=https%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&img src=&/1f5dce51b7e20896acb7c1_b.png& data-rawwidth=&803& data-rawheight=&213& class=&origin_image zh-lightbox-thumb& width=&803& data-original=&/1f5dce51b7e20896acb7c1_r.png&&原版的含义,有种依赖于实现的意思,随便玩。。。&br&而且macro-task和micro-task到底包含哪些也没详细说。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&更新三:&/b&&br&&br&然后,重新看了遍聊天记录,原来“&b&-超亼/夿夿(广州—坚壳)&/b&”大神已经指出过了。。。&br&&img src=&/fcd961794dedc6d2ea3840_b.png& data-rawwidth=&511& data-rawheight=&127& class=&origin_image zh-lightbox-thumb& width=&511& data-original=&/fcd961794dedc6d2ea3840_r.png&&&br&又翻到了&b&汉语版promsieA+规范中引的那篇文章&/b&。&br&&img src=&/effe01c28c37a226807cea_b.png& data-rawwidth=&574& data-rawheight=&185& class=&origin_image zh-lightbox-thumb& width=&574& data-original=&/effe01c28c37a226807cea_r.png&&&br&文章链接:&a href=&///?target=http%3A///%3Fp%3D11& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Promise进阶介绍+原生实现&i class=&icon-external&&&/i&&/a&&br&&img src=&/7de5c24fb05ebd_b.png& data-rawwidth=&664& data-rawheight=&473& class=&origin_image zh-lightbox-thumb& width=&664& data-original=&/7de5c24fb05ebd_r.png&&&br&&b&一切都明朗了&/b&。&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&更新四:&/b&&br&&br&其实大神“&b&最爱柠檬(南京-菜B檬檬&/b&&b&)&/b&”一开始就贴了V8源码。。。&br&&img src=&/a6db8bc14d899c4b165cd_b.png& data-rawwidth=&470& data-rawheight=&263& class=&origin_image zh-lightbox-thumb& width=&470& data-original=&/a6db8bc14d899c4b165cd_r.png&&&img src=&/8e3aa96feb_b.png& data-rawwidth=&477& data-rawheight=&370& class=&origin_image zh-lightbox-thumb& width=&477& data-original=&/8e3aa96feb_r.png&&&img src=&/cbeba76a1f0ad3cded817d_b.png& data-rawwidth=&479& data-rawheight=&237& class=&origin_image zh-lightbox-thumb& width=&479& data-original=&/cbeba76a1f0ad3cded817d_r.png&&&br&只是吾等平民,实在太锉了。。。&br&(眼下,&b&正在被虐中。。。&/b&&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&&b&感悟1:人丑就该多读书。&/b&&br&&b&感悟2:你永远都没有新的想法,除非在写博士论文。&/b&&br&&b&感悟3:我不生产答案,我只是大神们聊天记录的搬运工。&/b&&br&&br&- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&br&&br&(先发这些,以后有新结论再更新。。。&br&&br&&b&剩下的疑问:&/b&&br&&b&process.nextTick也会放入microtask quque,为什么优先级比promise.then高呢?&/b&&br&&b&到底是不是setTimeout有一个依赖实现的最小延迟?4ms?&br&&/b&&br&QQ群:JS高级前端开发 &br&总入口:JS前端开发跳板群
先把问题贴一下:Promise的队列与setTimeout的队列的有何关联?setTimeout(function(){console.log(4)},0);
new Promise(function(resolve){
console.log(1)
for( var i=0 ; i&10000 ; i++ ){
i==9999 && resolve()
console.log(2)
}).then(function…
简单回答:是的,在 ES6 不要使用 var,用 let 或 const 代替。&br&&br&var 在一定程度上存在缺陷,其实在 strong mode 下使用 var 会直接报 SyntaxError&br&&br&&a href=&///?target=https%3A///document/d/1Qk0qC4s_XNCLemj42FqfsRLp49nDQMZ1y7fwf5YjaI4/mobilebasic%3Fpli%3D1%23h.26d4x5sphhty& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/documen&/span&&span class=&invisible&&t/d/1Qk0qC4s_XNCLemj42FqfsRLp49nDQMZ1y7fwf5YjaI4/mobilebasic?pli=1#h.26d4x5sphhty&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&最简单的方式就是全局替换成 let,但建议注意一下 const。let 和 const 区别并不大,const 为常量,let 为变量。我的使用方式是只要定义的不会改变就用 const,然后你会发现大部分使用的是 const。&br&&br&补充1:添加&a href=&///?target=http%3A///questions/278652/how-much-should-i-be-using-let-vs-const-in-es6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一个国外讨论的链接&i class=&icon-external&&&/i&&/a&
简单回答:是的,在 ES6 不要使用 var,用 let 或 const 代替。var 在一定程度上存在缺陷,其实在 strong mode 下使用 var 会直接报 SyntaxError最简单的方式就是全局替换成 let,但建议注意一下 const。let 和 const 区别并不大,cons…
个人对ES4的状况表示遗憾,惋惜。&br&&br&在我看来,ES4可以算是一次较好的改进,能够满足较大规模的开发需要,但可惜的就是步子迈太大了,遭受的反对过多。&br&&br&这一阵我也思考了这些问题,因为还是有很多人不支持ES6的改进,觉得把本来很简单的JS搞复杂了,没有必要。我觉得这个问题的分歧点在哪里呢,在于虽然大家都是做Web前端开发,都是在浏览器里写东西,但产品形态差距太大。&br&&br&我能够想到,是哪些人希望JS加上类、模块、类型,又是哪些人觉得不改就挺好。前一种多半是做Web应用的,也就是在浏览器中开发“软件”的,后一种多半是做“页面”的。这两种产品形态的差异,导致双方对开发语言的需求大为不同,前者恨不得不要用JS,改用C#,后者连现在已有的JS都可能觉得啰嗦。&br&&br&这两种人其实是无法调和的,并且分歧会越来越大。Web应用开发者在ES4的时代相对弱势,所以ES4就悲剧了,而现在,这类人占比越来越高,话语权也越来越强,所以ES6就这样了,再往后,页面开发者更觉得难以忍受了。&br&&br&所以有时候我真觉得,干脆别搞ES6什么的了,保留现有JS不变,像Google搞Dart那样,重新标准化一门新语言,然后大家各取所需,搞页面的就用现在的JS,搞应用的就用新语言,各自演进,大家都快乐,多好啊。&br&&br&以目前这种状况,搞应用的嫌ES6步子小,搞页面的嫌大,再往后,多迈一步都是很困难的,因为反对的声音将越来越大,难办啊。
个人对ES4的状况表示遗憾,惋惜。在我看来,ES4可以算是一次较好的改进,能够满足较大规模的开发需要,但可惜的就是步子迈太大了,遭受的反对过多。这一阵我也思考了这些问题,因为还是有很多人不支持ES6的改进,觉得把本来很简单的JS搞复杂了,没有必要。…
其实我对 ES6 Class 很无感,一来它不过是个语法糖,二来这个语法糖很坑爹,一些原来能做的事情用纯 class synatx 是做不了的,比如 prototype property 和 static property。因为没有这两个的语法支持,React 用了 ES6 class 以后就没法用 mixin 了,Angular 2 也是,虽然是 TypeScript,但组件的一些必须选项没法直接在 类声明里面表达,又不想倒退回 ES5 那样直接在构造函数上加属性,于是只好依赖 ES7 decorator... (Stage 1提案) 而支持直接在类声明里面声明 static property 的提案目前才 stage 0,所以 ES6 版本的 class 其实很废的。&br&&br&另外说句不中听的话,搞不懂原型继承就别给 ES6 class 拍手叫好啦,还是去写 java 吧。
其实我对 ES6 Class 很无感,一来它不过是个语法糖,二来这个语法糖很坑爹,一些原来能做的事情用纯 class synatx 是做不了的,比如 prototype property 和 static property。因为没有这两个的语法支持,React 用了 ES6 class 以后就没法用 mixin 了,Angul…
讲笑话,JavaScript的竞争优势根本不在语言本身。
讲笑话,JavaScript的竞争优势根本不在语言本身。
不管引不引入 class,都会有继承,也会有接口,无非是继承的实现方式都是原型链继承,接口都是隐式的。引入 class 只是在语法层面标准化了类的概念,意义上类似 es6的 module loader。&br&&br&面向对象和你的语言没有太大关系,只是项目规模的大小决定了是否需要面向对象,确实需要面向对象组织的项目,哪怕语言上这快支持得不太好,也会有各种库去支持实现(参考 es5和 es3的各种 oo 库)。&br&&br&标准层面上的支持,是为了让开发者把精力放在业务逻辑的实现上,而不要老去玩这种弥补语法缺陷的轮子上。
不管引不引入 class,都会有继承,也会有接口,无非是继承的实现方式都是原型链继承,接口都是隐式的。引入 class 只是在语法层面标准化了类的概念,意义上类似 es6的 module loader。面向对象和你的语言没有太大关系,只是项目规模的大小决定了是否需要面…
很多人一提到新的东西,第一反应就是兼容性不够好,所以我不能用,但是对于ECMAScript 2015 (ECMAScript 6) 而言,它并不一定要等到所有主流浏览器都兼容了才可以开始使用。&br&&br&最应该立刻使用的场景,是那些没有浏览器负担,自成一体的运行环境,比如node,很多新的语言特性能够大幅提高编程效率。&br&&br&其次,是那些能够接受到ES5的运行环境,比如只需要支持到IE9+的一些Web系统,编写的时候可以使用ES6,然后在发布的时候用Babel这样的东西转换成ES5即可,主流的一些组件化框架都逐渐支持这种方式,比如Angular和React。&br&&br&如果你的运行环境是ES3的,那这个确实可以先放一放了。
很多人一提到新的东西,第一反应就是兼容性不够好,所以我不能用,但是对于ECMAScript 2015 (ECMAScript 6) 而言,它并不一定要等到所有主流浏览器都兼容了才可以开始使用。最应该立刻使用的场景,是那些没有浏览器负担,自成一体的运行环境,比如node,很…
JS终于变得人性化了一点。&br&&br&刚学JS那会,看到各种书籍和各个博客关于实现Javascript继承讨论,简直让人想把书给扔了,想把电脑屏给幕砸了。各种实现方法几十种,而且还乐在其中地分析哪种实现更简洁、哪种性能更好。虽然所有实现都是基于原型链的,但是代码里面的各种奇技淫巧,简直让人抓狂。其他语言用一个关键字解决继承问题,JS偏偏特立独行,各种实现方法看的人眼花缭乱,简直太丧心病狂,太没人道主义精神了。最让人哭笑不得的是,这本来就是当初JS设计的不合理,偏偏一大帮人却把JS的原型特性标榜为这就是JS最强大的地方。&br&&br&对于我这个懒人来说,我还是拥抱ES6去吧,代码是为产品服务的,花时间去研究各种各样的JS继承实现方法,然后就以为自己的JS基础变得扎实了,还不如直接用ES6的class,花多点空余时间去陪女朋友~
JS终于变得人性化了一点。刚学JS那会,看到各种书籍和各个博客关于实现Javascript继承讨论,简直让人想把书给扔了,想把电脑屏给幕砸了。各种实现方法几十种,而且还乐在其中地分析哪种实现更简洁、哪种性能更好。虽然所有实现都是基于原型链的,但是代码里…
比FF还低。。这是我大火狐在知乎被黑的最惨的一次!!
比FF还低。。这是我大火狐在知乎被黑的最惨的一次!!
其实按照现在大多数 js 项目的写法,直接全文替换 var 成 let,估计都能跑的起来……
其实按照现在大多数 js 项目的写法,直接全文替换 var 成 let,估计都能跑的起来……
泻药 这题好大……&br&&br&基本不会&br&更答不来&br&只好胡扯扯淡&br&&br&generator在v8内部就是个GeneratorObject 吧&br&&a href=&///?target=http%3A//factory.cc& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&factory.cc&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 里有 NewJSGeneratorObject 方法来创建这货&br&然后&a href=&///?target=http%3A//runtime.cc& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&runtime.cc&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&里&br&会Runtime_CreateJSGeneratorObject 这货&br&看起来没啥特别的&br&无非就是给这货存个上下文、操作栈点啥的&br&看起来也就是费点内存的样子&br&没啥特明显的大开销&br&&br&&a href=&///?target=http%3A//paser.cc& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&paser.cc&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&里&br&ParseEagerFunctionBody&br&会接受 is_generator 参数&br&如果是 true&br&就表示要处理迭代&br&函数变量丢给个变量代理器&br&然后会构建一些新运行时配置啊任务啊啥的&br&再由NewYield 接过带新运行时的任务&br&这玩意会调 ast.h 下的 Yield 类&br&类里有区分是否为 yield * 的枚举类型&br&这里也是看起来除了内存没啥特大开销的样子&br&&br&大概这样子&br&偶瞎扯的
泻药 这题好大……基本不会更答不来只好胡扯扯淡generator在v8内部就是个GeneratorObject 吧 里有 NewJSGeneratorObject 方法来创建这货然后里会Runtime_CreateJSGeneratorObject 这货看起来没啥特别的无非就是给…
&b&当然有必要,即使是语法糖。&/b&&br&不然的话太多人都在自己造class方案,而且明明已经有比较广泛可的best practice了还要动歪脑筋。&br&“你知道JS里实现class和继承有多少种方法吗?”简直就是“你知道茴字有几种写法吗?”。&br&&br&现在有了class就可以把有限的精力匀更多出来造别的轮子了。&br&&br&至于接口和泛型,我非常赞同TypeScript那种方式,在transpiler上用作约束,而不对实际生成的代码造成影响。
当然有必要,即使是语法糖。不然的话太多人都在自己造class方案,而且明明已经有比较广泛可的best practice了还要动歪脑筋。“你知道JS里实现class和继承有多少种方法吗?”简直就是“你知道茴字有几种写法吗?”。现在有了class就可以把有限的精力匀更多出…
由于 IE8 中不支持 &b&default&/b& 做 key,这个暂时无解。&br&不过你暂时可以这样,不使用 &b&export default&/b&,改用传统的&b& module.exports =。&/b&&br&引用时使用 import 或 require 均可
由于 IE8 中不支持 default 做 key,这个暂时无解。不过你暂时可以这样,不使用 export default,改用传统的 module.exports =。引用时使用 import 或 require 均可
&b&这个方案目前有 &a class=& wrap external& href=&///?target=https%3A//phabricator.babeljs.io/T2817& target=&_blank& rel=&nofollow noreferrer&&Bug &i class=&icon-external&&&/i&&/a&不能解决问题,请转向 &a data-title=&@贺师俊& data-editable=&true& class=&member_mention& href=&///people/3ec3ba90a0d38& data-hash=&3ec3ba90a0d38& data-tip=&p$b$3ec3ba90a0d38&&@贺师俊 &/a&的&a class=&internal& href=&/question//answer/&&回答&/a&。&/b&&br&&br&可以使用这两个插件转换到 ES3 的对应语法(给关键字加上引号):&br&&ul&&li&&a class=& wrap external& href=&///?target=http%3A//babeljs.io/docs/plugins/transform-es3-property-literals/& target=&_blank& rel=&nofollow noreferrer&&ES3 property literals transform&i class=&icon-external&&&/i&&/a&&/li&&li&&a class=& wrap external& href=&///?target=http%3A//babeljs.io/docs/plugins/transform-es3-member-expression-literals/& target=&_blank& rel=&nofollow noreferrer&&ES3 member expressions literals transform&i class=&icon-external&&&/i&&/a&&/li&&/ul&
这个方案目前有 不能解决问题,请转向 的。可以使用这两个插件转换到 ES3 的对应语法(给关键字加上引号):
let 声明的变量是块级作用域局部变量。&br&&br&&a href=&///?target=https%3A//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&developer.mozilla.org/e&/span&&span class=&invisible&&n-US/docs/Web/JavaScript/Reference/Statements/let&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
let 声明的变量是块级作用域局部变量。
除了使用 sourcemap 之外,我想不出和不使用 ES6 调试有哪些区别?
除了使用 sourcemap 之外,我想不出和不使用 ES6 调试有哪些区别?
babeljs可以指定使用哪些transformers。比较方便的方式是在对应的目录下写个 .babelrc 配置文件。比如 node/io 早就原生支持 generator,可以不用babel编译,配置文件就可以这样:&a href=&///?target=https%3A///hax/async.js/blob/master/.babelrc& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/hax/async.js&/span&&span class=&invisible&&/blob/master/.babelrc&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&具体transformers可看babel的文档:&a href=&///?target=http%3A//babeljs.io/docs/usage/transformers/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&babeljs.io/docs/usage/t&/span&&span class=&invisible&&ransformers/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&2015/5&br&&br&【2015/7更新】&a href=&///?target=https%3A///babel/babel/issues/631& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Generate blacklist based on targets · Issue #631 · babel/babel · GitHub&i class=&icon-external&&&/i&&/a& 此issue为根据编译目标平台自动产生blacklist,不过目前暂时关闭了。&br&&br&【2015/9更新】由于上面这个issue被暂时排除在babel核心之外,所以我自己写了一个babel特性支持检测库:&a href=&///?target=https%3A///hax/babel-features& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hax/babel-features · GitHub&i class=&icon-external&&&/i&&/a& 。
babeljs可以指定使用哪些transformers。比较方便的方式是在对应的目录下写个 .babelrc 配置文件。比如 node/io 早就原生支持 generator,可以不用babel编译,配置文件就可以这样:具体transformers可看babel的文档:…
已有帐号?
社交帐号登录
无法登录?
社交帐号登录

我要回帖

更多关于 let var 的文章

 

随机推荐