2
在Chrome Canary和Node.js 0.12.3中,以下代碼打印p
。爲什麼使用--harmony在Node.js中引發錯誤?
'use strict';
let o = {
name: 'o',
foo: function() {
['1'].map(function() {
console.log(this.name);
}.bind(this));
},
};
let p = { name: 'p' };
o.foo.call(p); // p
在Chrome Canary中,以下代碼還打印出p
。但爲什麼它會拋出一個類型錯誤在Node.js 0.12.3與--harmony
標誌?
'use strict';
let o = {
name: 'o',
foo: function() {
['1'].map(() => {
console.log(this.name);
});
},
};
let p = { name: 'p' };
o.foo.call(p); // p in Chrome, TypeError in Node.js with --harmony
換句話說,爲什麼當第二代碼片段在Node.js的運行this
undefined
?
箭頭函數在node/io中被破壞https://github.com/nodejs/io.js/issues/735 –
這幾乎肯定是由於Canary使用的是最新版本的v8而不是節點是(因爲Canary故意出血,而Node則試圖保持穩定)。 – apsillers