ecmascript-5相关内容
如果我在JavaScript控制台(在Chrome和Firefox中都进行了测试)中键入019 > 020,则会得到答案true。 这是因为020被解释为OctalIntegerLiteral(等于16),而019显然被解释为DecimalLiteral(并且等于19)。由于19大于16,019 > 020为true。 令我困惑的是,为什么019首先被解释为DecimalLiteral。是
..
是否可以检测到特定DOM事件是否绑定了任何事件处理程序(包括浏览器默认事件处理)-在Firefox的Gresemonkey代码中(EcmaScript 5.1 strict mode)? 到目前为止,我成功地在选定文本时取消了单击事件处理,但我想在以下所有情况下取消事件处理单击事件触发默认操作: 选择页面上的文本 显示上下文菜单(即单击鼠标右键) 后面有一个链接(左键单击)
..
在function类型对象中,length属性表示function类型对象预期的参数数量。例如,在下面的可视化中,Function对象、Array对象中的length字段具有值1。 在上面的可视化中,length字段也是object类型ObjectArray.prototype的成员,值为0。 MDN表示: Array.prototype.length反映数组中的元素数量。
..
..
我知道 with 语句的用法 在 Javascript 中不推荐 并且在 ECMAScript 5 中被禁止,但它允许人们在 Javascript 中创建一些不错的 DSL. 例如 CoffeeKup - 模板引擎和 Zappa 网络 DSL.那些使用一些 非常 weird 使用 with 语句的作用域方法来实现 DSLish对他们的感觉. with 语句和这些类型的 DSL 有没有未
..
obj1 = Object.create({}, { property: { enumerable: true, value: 42 } })>obj1.property = 56>56>obj1.property>42 使用 use strict 会出错. 我想组合多个对象:使用 jQuery.extend(): new_obj = $.extend(true, objN, obj1)
..
如何在不使用 ECMA6 的情况下跨越对象功能? 尝试 函数可以(arg0,arg1){返回 arg0 + arg1;}函数 foo(bar, haz) {this.bar = bar;这.haz = haz;}myArgs = [1,2]; 使用 可以 我可以做到: can.apply(this, myArgs); 尝试使用 foo 时: new foo.apply(this,
..
我们可以做以下转换: var a = "129.13"|0,//变为 129变量 b = 11.12|0;//变成 11变量 c = "112"|0;//变成 112 这似乎可行,但不确定这是否是标准的 JS 功能.有谁知道这是否可以安全地用于将字符串和小数转换为整数? 解决方案 是的,这是标准行为.位运算符仅对整数进行运算,因此它们将给出的任何数字转换为有符号的 32 位整数.
..
考虑以下示例代码(也许我做错了?) var FlareCurrency = {};出口 {FlareCurrency}; 我有以下任务: gulp.task("compile:add-new-currency-minified", function(){return gulp.src('src/add-new-currency/**/*.js').pipe(通天塔()).pipe(conc
..
为什么对象默认不可迭代? 我经常看到与迭代对象相关的问题,常见的解决方案是迭代对象的属性并以这种方式访问对象中的值.这似乎很常见,以至于我想知道为什么对象本身不可迭代. 类似 ES6 的语句 for...of 默认情况下很适合用于对象.因为这些功能仅适用于不包含 {} 对象的特殊“可迭代对象",所以我们必须通过一些复杂的步骤才能使这项功能适用于我们想要使用它的对象. for.
..
我正在尝试从 Rhino 书中学习 JavaScript.我试图执行书中关于 eval() 的以下代码.我正在使用 node.js (v0.10.29) 来执行示例. var geval = eval;//将 eval 别名为 gevalvar x = '全局';//两个全局变量var y = '全局';函数 f() {var x = '本地';//定义局部变量eval('x += "改变了";
..
严格模式 pragma 在 ECMAScript5 中的作用域是什么? "使用严格"; 我想这样做(主要是因为 JSLint 不会抱怨它): "使用严格";(功能 () {//我的东西在这里...}()); 但我不确定这是否会破坏其他代码.我知道我可以做到这一点,这会将编译指示范围限定为函数... (函数(){“严格使用";//我的东西在这里...}()); 但是 JSLint 抱怨它
..
考虑以下摘录 来自 ECMA-262 v5.1(我最近看到在这个问题中: 词法环境是一种规范类型,用于根据 ECMAScript 代码的词法嵌套结构定义标识符与特定变量和函数的关联.词法环境由环境记录和对外部词法环境的可能为空的引用组成.通常,词法环境与 ECMAScript 代码的某些特定句法结构相关联,例如 FunctionDeclaration、WithStatement 或 TryS
..
我知道在函数内部是this. var func = function {返回 this.f === arguments.callee;//=>true,如果绑定到某个对象//=>false,if 绑定为 null,因为 this.f === undefined}var f = func;//不绑定任何东西;var obj = {};obj1.f = 函数;//如果作为 obj1.f() 调用则绑
..
我最近开始在一个项目中使用 JS Promises.我注意到每次使用 .catch 我的 JS linter 都会抱怨.它确实运行并做了它应该做的事,但我查找了 ECMAScript 规范 和看起来确实是正确的:由于 catch 是关键字,不能用作标识符.据我所知,方法名称是标识符,所以这是无效的: Promise.reject("Duh").catch(alert); 应该是这样的: Pr
..
在阅读 这篇发表在 dzone 上的文章 时,我发现了一段 JavaScript 最初由 Marcus Lagergren 在 Twitter 上发布. 以下代码显然打印了字符串 "fail" (![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]; 这涉及隐式类型转换,我正在尝试了解如何
..
考虑下面的示例代码(也许我做错了?) var FlareCurrency = {};出口 {FlareCurrency}; 我有以下任务: gulp.task("compile:add-new-currency-minified", function(){return gulp.src('src/add-new-currency/**/*.js').pipe(babel()).pipe(c
..
我现在使用 Traceur Compiler 来获得 ES6 特性的优势. 我想从 ES5 实现这些东西: function Animal() {var self = this,打招呼;sayHi = 函数(){self.hi();};this.hi = function() {/* ... */}} 目前 traceur 不支持 private 和 public 关键字(来自和谐).并
..
如果我想在 JavaScript 中创建一个对象,该对象具有指向另一个对象的原型链接,但有几个它自己的属性,我该怎么做? var object1 = {一:1,乙:2};var object2 = Object.create(object1);object2.c = 3;object2.d = 4;控制台日志(对象2);//我的新对象以 object1 作为原型链接 我的挑战是我必须一次设
..
我想知道 ES6 中的 let 和 const 之间有什么区别.它们都是块作用域,如以下代码中的示例: const PI = 3.14;控制台日志(PI);PI = 3;控制台日志(PI);常量 PI = 4;控制台日志(PI);无功 PI = 5;控制台日志(PI); 在 ES5 中,输出将是: 3.143.143.143.14 但是在 ES6 中它会是: 3.14345 我想知道为
..