2016-09-09 6 views
1

Führen Sie diesen Code in node.js v6.0.0:NodeJS dieser Punkt nicht definiert in Funktion

x = 3; 
var foo = { 
    x:1, 
    bar: { 
    x: 2, 
    baz: function() { 
     console.log(this.x); 
    } 
    } 
}; 

foo.bar.baz(); 
var a = foo.bar.baz; 
a(); 

Fehler:

2 
TypeError: Cannot read property 'x' of undefined 

Aber in Chrom 52.0.2743.116 Konsole:

2 
3 
+0

Es funktioniert für mich mit Knoten v6.0.0. Sind Sie sicher, dass Sie denselben Code ausgeführt haben, den Sie im Knoten angezeigt haben? – mscdex

+0

Oh! Es ist anders! Bitte ändere 'x = 3' in' module.exports.x = 3' und führe es im strikten Modus aus '; –

+0

Ich weiß! Im strikten Modus kann dies nicht auf ein globales Objekt zeigen. –

Antwort

1

Dies tritt nur auf, wenn Sie sich in ES6 im strikten Modus befinden. In diesem Fall zeigt das Top-Level "this" nichts. Ohne "use strict" (was implizit bei der Definition eines Moduls in Nodejs festgelegt wird) verhält sich das Verhalten wie in Chrome.

Beachten Sie, dass für den Code im strikten Modus zu arbeiten, müssen Sie eine 'var' vor x = 3 setzen.