JavaScriptは単なる言語であり、実装の1つはV8
エンジンです。これはchromeとnode.jsで使用されています。JavaScript:ブラウザのサポートと純粋な言語のサポート:setTimeout、setInterval
DOM
サポートはJavaScript言語機能ではなく、ブラウザ機能(純粋なJSにはDOM
はありません)です。同じように、XMLHttpRequest
はJavaScriptの一部ではありません。これはJS言語のブラウザアドオンです。
私の質問は、彼が他の人の間では、setTimeout
はV8ではない、と述べてPhilip Roberts' JS conf EU話にも関します。私は彼が間違っているかもしれないと思いますが、私は確信が持てません。これが私の質問です。
私はNode.jsの(V8ベース)のコンソールを開き、次のように入力すると:
> 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)
を私がすることを参照してください。それはES6の一部なので、プロトタイプがある
Promise
、すでにノードの新しいバージョンで利用可能です。言語XMLHttpRequest
はそれがブラウザでだけ利用可能なので、それはsetTimeout
とsetInterval
両方がある言語の一部ではない、がないように、それはJSの一部です。 Philip Robertsはそうではないと言いますが、node.jsとの下で利用できると私は確信しています。setTimeout
/setInterval
は、ブラウザかサーバであろうと、シングルスレッド/非同期環境では意味があります。。
私は彼が言っていることを知っていると思いますが、私は、なぜ:)
編集理解したい:私はsetTimeout
がwindow
オブジェクト上の関数であることがわかり
。基本的には、window
は非標準のものです。