Traceur 是一个来自 Google 的 Javascript 编译器,通过它可以体验一些很新并且有趣的 Javascript 语言特性,这些多数是还没有被当前浏览器实现的 ECMAScript 标准或草案,比如:数组比较、类、模块、迭代器、方法参数默认值、Promise等。
以下是几个例子:
数组比较(Array Comprehension):
var array = [for (x of [0, 1, 2]) for (y of [0, 1, 2]) x + '' + y]; expect(array).to.be.eql([ '00', '01', '02', '10', '11', '12', '20', '21', '22' ]);
更精简的函数定义语法(Arrow Functions):
var square = (x) => { return x * x; }; var square2 = x => x * x; var objectify = x => ({ value: x }); // Immediate return of an object literal must be wrapped in parentheses expect(square(4)).to.be.eql(16); expect(square2(4)).to.be.eql(16); expect(objectify(1)).to.be.eql({ value: 1 });
Promises:
function timeout(ms) { return new Promise((resolve) => { setTimeout(resolve, ms); }); } timeout(100).then(() => { console.log('done'); });
更详细的语言特性列表,请参考:https://github.com/google/traceur- compiler/wiki/LanguageFeatures