JavaScript ist nur eine Sprache und eine seiner Implementierungen ist die V8
-Engine. Es wird sowohl in Chrome als auch in node.js verwendet.JavaScript: Browserunterstützung vs. reine Sprachunterstützung: setTimeout, setInterval
DOM
Unterstützung ist nicht JavaScript-Sprachfunktion, es ist eine Browser-Funktion (es gibt keine DOM
in reinem JS). Auf die gleiche Weise ist XMLHttpRequest
kein Teil von JavaScript. Es ist ein Browser-Addon für die JS-Sprache.
Meine Frage bezieht sich aufPhilip Roberts' JS conf EU reden, wo er sagt, dass, unter anderem setTimeout
ist nicht in V8. Und ich denke, er könnte sich irren, aber ich bin mir nicht sicher, und das ist meine Frage.
Wenn ich öffnen node.js (V8-based) Konsole und geben Sie die folgenden Schritte aus:
> Promise
[Function: Promise]
> setTimeout
[Function]
> setInterval
[Function]
> XMLHttpRequest
ReferenceError: XMLHttpRequest is not defined
at repl:1:1
at REPLServer.defaultEval (repl.js:262:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer.<anonymous> (repl.js:431:12)
at emitOne (events.js:82:20)
at REPLServer.emit (events.js:169:7)
at REPLServer.Interface._onLine (readline.js:211:10)
at REPLServer.Interface._line (readline.js:550:8)
at REPLServer.Interface._ttyWrite (readline.js:827:14)
Ich sehe, dass:
Promise
Prototyp gibt es, da es ein Teil von ES6 ist, bereits verfügbar unter neuen Versionen von Knoten. Es ist ein Teil der JS als SpracheXMLHttpRequest
gibt es nicht, da es in den Browsern nur verfügbar ist, ist es nicht Teil der Sprache- beide
setTimeout
undsetInterval
gibt es. Philip Roberts sagt, sie sind nicht - aber ich sehe sie unter node.js und Ich denke, dass sie sein sollten, dasetTimeout
/setInterval
Sinn in single-threaded/async-Umgebung, egal, ob es ein Browser oder ein Server ist.
Ich glaube, er weiß, was er sagt, aber ich will verstehen, warum :)
edit:
Ich sehe setTimeout
ist eine Funktion auf window
Objekt. Und im Grunde ist window
das Nicht-Standard-Zeug.