JavaScript是只是一个语言和它的实现方式之一是V8
引擎。它用于chrome以及node.js。的JavaScript:浏览器支持与纯语言支持:的setTimeout,setInterval的
DOM
支持不是JavaScript语言功能,它是浏览器功能(纯JS中没有DOM
)。用同样的方法,XMLHttpRequest
不是JavaScript的一个组成部分。它是JS语言的浏览器插件。
我的问题涉及到Philip Roberts' JS conf EU谈话,他说,等等,setTimeout
不V8。我认为他可能是错的,但我不确定,这是我的问题。
当我打开的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)
我看到:
Promise
原型是存在的,因为它是ES6的一部分,在新版本的节点下已经可用。它是作为一种语言XMLHttpRequest
的JS的一部分是不存在的,因为它只是在浏览器中可用,这不是语言- 都
setTimeout
和setInterval
的一部分,在那里。菲利普·罗伯茨说,他们是不会 - 但我看到他们下的node.js和我想他们应该是可用的,因为在单线程/异步环境setTimeout
/setInterval
意义,不管它是一个浏览器或服务器。
我想他知道他在说什么,但我想明白为什么:)
编辑:
我看到setTimeout
是window
对象的函数。基本上,window
是非标准的东西。