草庐IT

ecmascript-5

全部标签

javascript - ECMAScript 规范中的 `ExpressionNoIn` 是什么意思?

我正在深入研究for循环并在http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.3的规范中遇到ExpressionNoIn这是什么意思? 最佳答案 在section11.14中有解释“逗号运算符(,)”:*NoIn具有相同的结构,只是in排除了in关键字的使用,第11.8节“关系运算符”:规范说:The"NoIn"variantsareneededtoavoidconfusingtheinoperatorinarelationalexpressionwiththeinop

javascript - EcmaScript 规范是否对用于实现运行时的进程模型施加了任何限制?

EcmaScript规范是否对用于实现运行时的进程模型施加了任何限制?例如,事件循环是否需要位于与管理与操作系统IO子系统的运行时通信的线程不同的线程上? 最佳答案 不,它没有具体说明这些。运行时通信和IO甚至不是语言的一部分,它们作为依赖于实现的奇异对象出现。ECMAScript规范甚至没有使用术语“事件循环”,尽管它确实定义了JobsandJobQueues哪个工作相似。然而,没有理由用多线程实现那些,毕竟,只有JS总是顺序运行。相比之下,HTML5规范确实定义了eventloops甚至是processmodel,但对多线程也没

javascript - 如何在 JavaScript 2015 (EcmaScript 6) 中给它取别名?

这个问题在这里已经有了答案:howtodo`varself=this`insidees6class?(2个答案)关闭6年前。在EcmaScript5中,我们可以将this别名为varctrl=this,如以下代码片段所示。//EcmaScript5functionBookController{varctrl=this;ctrl.books=[];ctrl.getBook=getBook;functiongetBook(index){returnctrl.books[index];}}ES6中使用class的等效BookController。我有一个场景,其中getBook是用this而

javascript - 为什么 ECMAScript 仍然不是 W3C 的推荐?

理论上,浏览器可以支持多种用于网页客户端脚本的编程语言。实际上,ECMAScript是唯一一种在所有浏览器中得到广泛实现和使用的语言。因此对于大多数人来说,它是网络不可或缺的一部分。但是,它从未被W3C提升为网页脚本的推荐标准。HTML5似乎也促进了它,尽管客户端交互性变得越来越重要。为什么会这样?是为了防止编程语言在网络平台上的垄断吗?(显然失败了)是因为W3C更喜欢只关注网络的声明性方面吗?或者仅仅是一种政治立场? 最佳答案 我会尝试一下:W3C试图起草和推荐标准。ECMAscript已经是来自ECMA的标准。它不需要重新批准该

javascript - 函数表达式是否有自己的作用域/词法环境

我正在阅读ECMA2625specification的执行上下文/词法环境部分.它声明如下:(添加了强调)ALexicalEnvironmentisaspecificationtypeusedtodefinetheassociationofIdentifierstospecificvariablesandfunctionsbaseduponthelexicalnestingstructureofECMAScriptcode.ALexicalEnvironmentconsistsofanEnvironmentRecordandapossiblynullreferencetoanouter

关于未引用变量的 JavaScript 闭包

我知道有关闭包的精彩帖子here和here,但似乎都没有解决我想到的特定情况。这个问题最好用代码来证明:functionfoo(){varx={};vary="whatever";returnfunctionbar(){alert(y);};}varz=foo();在bar中引用y会调用一个闭包,只要我将z保持在垃圾收集器周围就不会清理y。问题是——x会发生什么?即使它没有被引用,它是否也被那个闭包持有?垃圾收集器会发现没有引用x并清理它吗?或者只要我坚持使用z,x就会与y一起持续存在吗?(一个理想的答案是引用ECMA规范。) 最佳答案

javascript - Object.constructor===Object.constructor.constructor//为什么?

此处说明https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function函数对象实例的构造函数属性“指定创建对象原型(prototype)的函数”。这令人困惑,所以Object.constructor是“创建对象原型(prototype)的函数”?什么对象才是“对象”?我试图理解为什么Object.constructor的构造函数属性本身?因此:Object.constructor===Object.constructor.constructor//为什么?编辑:我找到了T.J.克劳德的回答很好,

javascript - Ecmascript 6 是否支持可变的 __proto__ 属性?

在当前的Ecmascript6草案(2012年11月)中,官方支持__proto__属性(第B.3.1节)。这有点令人惊讶,因为在当前的浏览器实现中,__proto__属性已被弃用。如果当前草案成立,ES6是否会完全支持可变原型(prototype)?我能否像目前在Firefox中那样为现有对象提供新原型(prototype)? 最佳答案 目前,计划将可变的__proto__包含在规范中(而不仅仅是在附件b中)。目前的计划是让它成为一个神奇的数据属性,仅存在于Object.prototype上并充当访问器(神奇的部分)。此属性也将是

javascript - 正则表达式仅捕获匹配中捕获组的最后一个实例

我在两种不同的语言(JavaScript和Flash)中使用以下正则表达式产生相同的奇怪结果。我想知道的不是如何修复它,而是为什么会出现这种行为?正则表达式:\[(\\{2}|\\\]|[^\]])*\]这里的目标是匹配括号内的字符串,并确保我不会在转义的括号处停止。如果我有文本输入[abcdefg]它是正确匹配的,但作为捕获组的一部分返回的唯一内容是g,正如我所期望的那样abcdefg。如果我将表达式更改为\[((?:\\{2}|\\\]|[^\]])*)\],然后我得到我想要的结果。那么为什么会这样呢?这在其他语言中是否一致?注意:将表达式简化为\[([^\]])*\]会产生同样的

javascript - 如何确保 ES3 程序在 ES5 引擎中运行?

因此ECMAScript5引入了一些与ECMAScript3的不兼容性。示例:Manyarticles已写明this===null||这个===undefined是可能的在ES5严格模式下:"usestrict";(function(){alert(this);//null}).call(null);但是,什么thestandard真的表明ES5引擎也允许在非严格模式下:15.3.4.3...ThethisArgvalueispassedwithoutmodificationasthethisvalue.ThisisachangefromEdition3,whereaundefined