草庐IT

javascript - ECMA脚本 :Harmony/ES6 to JavaScript compiler

看完Peter'sarticleonJavaScript我注意到了BrendanEichstatedthatonethegoalsforHarmonyistobeabettertargetforto-JavaScriptcompilers.目前有两个流行的编译器有一些模糊ES:Harmony合规性:TraceurCoffeeScript虽然CoffeeScript有一些合规性,但它并不是为ES:Harmony编译器而设计的,因此它对此没有用处。Tracuer似乎更加严格地遵守ES:Harmony规范,但我不知道它是否打算成为一个完整的ES:Harmony编译器。由于目标是将ES6编译为

javascript - 如何在恢复功能之前等待 JavaScript Promise 解决?

我正在做一些单元测试。测试框架将页面加载到iFrame中,然后针对该页面运行断言。在每次测试开始之前,我创建一个Promise它设置了iFrame的onload事件调用resolve(),设置iFrame的src,并返回promise。所以,我可以调用loadUrl(url).then(myFunc),它会等待页面加载后再执行myFunc是。我在我的测试中到处都使用这种模式(不仅仅是为了加载URL),主要是为了允许对DOM进行更改(例如,模仿单击按钮,并等待div隐藏和显示).这种设计的缺点是我经常编写匿名函数,其中只有几行代码。此外,虽然我有一个解决方法(QUnit的assert.a

javascript - 如何在恢复功能之前等待 JavaScript Promise 解决?

我正在做一些单元测试。测试框架将页面加载到iFrame中,然后针对该页面运行断言。在每次测试开始之前,我创建一个Promise它设置了iFrame的onload事件调用resolve(),设置iFrame的src,并返回promise。所以,我可以调用loadUrl(url).then(myFunc),它会等待页面加载后再执行myFunc是。我在我的测试中到处都使用这种模式(不仅仅是为了加载URL),主要是为了允许对DOM进行更改(例如,模仿单击按钮,并等待div隐藏和显示).这种设计的缺点是我经常编写匿名函数,其中只有几行代码。此外,虽然我有一个解决方法(QUnit的assert.a

javascript - ECMA脚本 2015 : const in for loops

下面两个(或两者都不是)代码片段中的哪一个应该在完整的ECMAScript2015实现中工作:for(consteofa)for(consti=0;i据我了解,第一个示例应该有效,因为e为每次迭代初始化。i不应该也是这种情况吗?在第二个版本中?我很困惑,因为现有的实现(Babel、IE、Firefox、Chrome、ESLint)似乎并不一致,并且有一个完整的const实现。,具有两种循环变体的各种行为;我也无法在标准中找到具体的要点,因此将不胜感激。 最佳答案 下面的for-of循​​环有效:for(consteofa)ES6规范

javascript - ECMA脚本 2015 : const in for loops

下面两个(或两者都不是)代码片段中的哪一个应该在完整的ECMAScript2015实现中工作:for(consteofa)for(consti=0;i据我了解,第一个示例应该有效,因为e为每次迭代初始化。i不应该也是这种情况吗?在第二个版本中?我很困惑,因为现有的实现(Babel、IE、Firefox、Chrome、ESLint)似乎并不一致,并且有一个完整的const实现。,具有两种循环变体的各种行为;我也无法在标准中找到具体的要点,因此将不胜感激。 最佳答案 下面的for-of循​​环有效:for(consteofa)ES6规范

javascript - 比较 ECMA6 集合是否相等

如何比较两个javascript集?我尝试使用==和===但都返回false。a=newSet([1,2,3]);b=newSet([1,3,2]);a==b;//=>falsea===b;//=>false这两个集合是等价的,因为根据定义,setsdonothaveorder(至少通常不会)。我看过thedocumentationforSetonMDN并没有发现任何有用的东西。有人知道怎么做吗? 最佳答案 试试这个:consteqSet=(xs,ys)=>xs.size===ys.size&&[...xs].every((x)=>

javascript - 比较 ECMA6 集合是否相等

如何比较两个javascript集?我尝试使用==和===但都返回false。a=newSet([1,2,3]);b=newSet([1,3,2]);a==b;//=>falsea===b;//=>false这两个集合是等价的,因为根据定义,setsdonothaveorder(至少通常不会)。我看过thedocumentationforSetonMDN并没有发现任何有用的东西。有人知道怎么做吗? 最佳答案 试试这个:consteqSet=(xs,ys)=>xs.size===ys.size&&[...xs].every((x)=>

javascript - 如何证明我的 JavaScript 文件在特定 JS 或 ECMA 版本的范围内?

假设您将获得一堆.js文件,现在您的工作是将它们分类为如下组:至少需要JavaScript1.85至少需要E4X(ECMAScript4EX)至少需要ECMAScript5或类似的东西。我对任何解决方案都感兴趣,尤其是那些使用JavaScript或PHP的解决方案。这用于创建自动化规范,但这无关紧要——这是一个很好的任务,应该很容易解决——但是,我不知道如何解决,这对我来说并不容易。因此,如果这对您来说很容易,请分享任何提示。我希望是这样的-http://kangax.github.com/es5-compat-table/#-只是不针对浏览器,而是针对针对不同JavaScript实现

javascript - ECMA 脚本 6 : what is WeakSet for?

WeakSet应该通过弱引用来存储元素。也就是说,如果某个对象未被任何其他对象引用,则应将其从WeakSet中清除。我写了下面的测试:varweakset=newWeakSet(),numbers=[1,2,3];weakset.add(numbers);weakset.add({name:"Charlie"});console.log(weakset);numbers=undefined;console.log(weakset);即使我的[1,2,3]数组没有被任何东西引用,它也没有从WeakSet中删除。控制台打印:WeakSet{[1,2,3],Object{name:"Char

javascript - CodeMash 2012 的 'Wat' 演讲中提到的这些奇怪的 JavaScript 行为的解释是什么?

'Wat'talkforCodeMash2012基本上指出了Ruby和JavaScript的一些奇怪的怪癖。我在http://jsfiddle.net/fe479/9/上对结果进行了JSFiddle.下面列出了特定于JavaScript(因为我不了解Ruby)的行为。我在JSFiddle中发现我的一些结果与视频中的结果不对应,我不知道为什么。但是,我很想知道JavaScript在每种情况下是如何处理幕后工作的。EmptyArray+EmptyArray[]+[]result:我对在JavaScript中与数组一起使用时的+运算符非常好奇。这与视频的结果相符。EmptyArray+Obj