setTimeout не работает в SpiderMonkey

#javascript #mozilla #spidermonkey

#javascript #mozilla #spidermonkey

Вопрос:

Я создал spidermonkey на Mac, следуя этому. В разделе build-release/dist/bin исполняемый файл — js24 вместо js (в соответствии с этим ).

Однако, когда я запускаю оболочку с использованием js24, выражения типа 1 2 работают, но когда я пытаюсь использовать такие вещи, как setTimeout(function () {}, 500) Я получаю,

 ReferenceError: setTimeout is not defined
  

Что я делаю не так? Я думал, что поведение будет таким же, как у оболочки узла.

Комментарии:

1. setTimeout не является частью языка.

2. setTimeout это функция объекта window , который является вашим глобальным в вашем браузере. Нет window , нет setTimeout

3. @MattBurland понял, спасибо. V8 тоже ведет себя таким образом, и узел добавляет это?

4. Первый результат для «spidermonkey settimeout»: gist.github.com/kevinoid/3146420

Ответ №1:

Сохранение отличных ответов из комментариев в качестве фактического ответа, чтобы этот вопрос можно было пометить как ответ.

setTimeout не является частью языка JavaScript, это часть объекта браузера window , который является глобальным объектом для кода JavaScript веб-страницы: https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout

node.js имеет аналогичный API: http://nodejs.org/docs/latest/api/timers.html#timers_settimeout_callback_delay_arg

Для реализации setTimeout в SpiderMonkey вы можете использовать этот код: https://gist.github.com/kevinoid/3146420