我写了一个非常简单的基准:
console.time('var');
for (var i = 0; i < 100000000; i++) {}
console.timeEnd('var')
console.time('let');
for (let i = 0; i < 100000000; i++) {}
console.timeEnd('let')
Run Code Online (Sandbox Code Playgroud)
如果你正在运行Chrome,可以在这里试试(因为NodeJS和Chrome使用相同的JavaScript引擎,虽然版本通常略有不同):
// Since Node runs code in a function wrapper with a different
// `this` than global code, do that:
(function() {
console.time('var');
for (var i = 0; i < 100000000; i++) {}
console.timeEnd('var')
console.time('let');
for (let i = 0; i < 100000000; i++) {}
console.timeEnd('let')
}).call({});Run Code Online (Sandbox Code Playgroud)
结果令我惊讶:
var: 89.162ms
let: 320.473ms
Run Code Online (Sandbox Code Playgroud)
我在Node 4.0.0 && …
我有Mongoose 架构和模型:
var MyClientSchema = new mongoose.Schema({
fist_name: {
type: String
},
phone_number: {
type: String
}
});
var MyClient = mongoose.model('MyClient', MyClientSchema);
Run Code Online (Sandbox Code Playgroud)
我应该如何记录(使用JSDoc)MyClient和/或MyClientSchema获取tab-completion并从WebStorm两个继承自mongoose.model类似的方法中输入建议?remove, findOne, find并从类似继承phone_number and first_name?
我有一个class定义为 an的基础object literal,在构造函数的范围内定义了方法。像这样:
var NodeMappingAbstract = function NodeMappingAbstract() {
this.mapToContent = function (obj) {
throw new Error('Not implemented');
};
this.getInfo = function (data) {
throw new Error('Not implemented');
};
this.normalizeUri = function normalizeUri(uri) {
return uriNormalizer.normalize(uri);
};
};
Run Code Online (Sandbox Code Playgroud)
如何NodeMappingAbstract使用 ES6class语法扩展?我尝试使用extends和super():
class SomeMapping extends NodeMappingAbstract{
constructor(){
super();
}
mapToContent(rawElement) {
console.warn('mapContent called');
return rawElement;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我实例化它并mapToContent像这样调用时:
let m = new SomeMapping();
m.mapToContent();
Run Code Online (Sandbox Code Playgroud)
我得到Error: Not implemented …