Tag: ecmascript 6

在ES6类中使用EventEmitter

我正在尝试在ES6中运行我自己的类中的EventEmitter: "use strict"; const EventEmitter = require('events'); class Client extends EventEmitter{ constructor(token, client_id, client_secret, redirect_uri, code){ super(); this.token = token; this.client_id = client_id; this.client_secret = client_secret; this.redirect_uri = redirect_uri; this.code = code; } eventTest(){ this.emit("event"); console.log(this.token); } } let testClient = new Client(1,2,3,4,5); testClient.eventTest(); testClient.on('event', () => {console.log('triggerd!')} ); 但事件没有做什么^^ 没有ES6我得到它与这个代码的工作: var util = require('util'); […]

jslint –edition = latest意外的ES6function。 常量

我试图使用node-jslint https://github.com/reid/node-jslint为了保持我的代码清洁 我在我的nodejs脚本中有一个const,但jslint说这是不是有效的ES6代码 Unexpected ES6 feature. const pdPersonsFilterId = process.argv[2]; // Line 10, Pos 0 这是我在控制台中使用的命令 jslint –edition=latest index.js 根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const可以使用全局常量。 为什么jslint不认为这个代码是有效的?

当最后一个参数是callback时,NodeJS默认参数

我有这样一个function(简化): doSmthg (name, age, callback) { callback(name, age); } 如果没有提供,我希望有一个年龄的默认值。 我知道我可以在ES6中做doSmthg(name, callback, age=42) {…} ,但是我被告知callback应该总是最后一个参数,因为它使得函数的调用更具可读性。 现在我发现的解决scheme是做到以下几点: doSmthg (name, age, callback) { if (arguments.length === 2) { age = 42; callback = age; } } 但我觉得这个解决scheme很难阅读。 这是好的解决scheme吗? 有更好的吗?

ES6导入相当于require()而不导出

通过使用require(./filename)我可以包含和执行文件名内的代码,而不需要在文件名本身内定义任何导出。 ES6中使用import的等效function是什么? 谢谢

在javascript中我应该尽可能使用const而不是var?

如果创build一个对象的引用,并且引用不会改变(即使对象将会改变),使用const代替var会更好吗? 例如: const moment = require('moment') exports.getQuotation = function(value) { const quotation = {}; quotation.value = value; quotation.expiryDate = moment().add(7, 'days'); // Do some other stuff with quotation perhaps return quotation; };

为什么Chrome在“严格模式”下使用块内的函数时仍然保持沉默?

我对JS "strict mode";很新颖"strict mode"; ,当我使用代码如: function outer(){ "use strict"; var ctype; function inner(){ if(ctype!=undefined){ function hello1(){ console.log("hello1"); } hello1() }else { function hello2(){ console.log("hello2"); } hello2(); } } return inner; } var inner = outer(); inner(); 我想知道为什么Chrome(版本49)没有提供任何错误,但是Node.js可以给出“ SyntaxError:在严格模式代码中,函数只能在顶层声明或者在其他函数中立即声明 ”。 此表指出,我的Chrome应该报告错误。

如何从CLI执行es6脚本

我有最新的NodeJS安装和任何JavaScript文件,我可以执行与node myscript.js但最近我学习ES6和一些最新的语法,它只是popup一些错误/exception,而执行。 我尝试了babel-cli,但似乎没有工作,因为它是编译es6到5而不是命令行执行。

在node.js(ES6 / Babel)中inputX和input*之间的区别是X?

我有一个在ES6(用Babel编译)编写的node.js库lib ,我在其中导出以下子模块: "use strict"; import * as _config from './config'; import * as _db from './db'; import * as _storage from './storage'; export var config = _config; export var db = _db; export var storage = _storage; 如果从我的主要项目,我包括这样的图书馆 import * as lib from 'lib'; console.log(lib); 我可以看到正确的输出,并按预期工作{ config: … } 。 但是,如果我尝试像这样包含库: import lib from 'lib'; […]

如何构build一个数组

我正在使用Node.JS v0.11.3中的Set和–harmony标志。 API工作正常,我可以add , remove , clear等,但我还没有能够初始化一个数组的集合。 我试过了(根据MDN页面的提示) var mySet = new Set([1, 1, 2]); 我怎样才能将一个数组转换成一个集合? MDN是否过期? 有Node.JS根本没有实现的function?

debuggingNodeJS + ES6应用程序(Webstorm)

我想在客户端和服务器端都使用ES6。 当然,我可以从像babel-node src/app.js这样的terminal启动我的NodeJS服务器,但是这使得无法进行debugging。 另一方面,Webstorm 9声称它支持ES6,但是当我尝试启动一个默认的Nodeconfiguration时,它抱怨a => a + 1函数。 问:如何从Webstorm 9内部启动NodeJS + ES6应用程序? PS我使用节点0.12。*版本PS我也试过这个,但它也不适合我