Подтвердить что ты не робот

Какой путь лучше, setInterval() или window.setInterval()?

Итак, есть пара вопросов к этому вопросу.

Прежде всего, я прошу об этом для setTimeout() и для setInterval()

Я видел пару разных способов назвать их, и мне интересно, какой путь лучше всего подходит для этого обстоятельства.

Я делаю игру js/canvas, и я просто просматриваю свой интервал рисования (где он петляет метод рисования)

В любом случае, вот несколько способов, которые я видел...

Часть A:

  • Использование окна.

    drawInterval = window.setInterval(draw, 60);
    
  • Не использовать окно.

    drawInterval = setInterval(draw, 60);
    

Часть B:

  • Не использовать кавычки и скобки вокруг имени функции

    drawInterval = setInterval(draw, 60);
    
  • Использование котировок и скобок вокруг имени функции

    drawInterval = setInterval("draw()", 60);
    

Итак, для части A: следует использовать окно. или нет? А как насчет window.clearInterval() и clearInterval?

И для части B: следует использовать кавычки и скобки или нет? Мне сказали, что это плохая идея использовать цитаты и скобки для этой ситуации.

4b9b3361

Ответ 1

  • Если вы не объявили свою собственную локальную область setInterval, нет никакой разницы между setInterval и window.setInterval.

  • Вторая форма использует подразумеваемый eval(). Этого следует избегать, когда это возможно, потому что оно представляет собой возможность инъекции кода.

Ответ 2

  • window - глобальный объект . Независимо от того, используете ли вы его явно, это что-то вроде стиля, но, как разработчик Python, я считаю, что явное лучше.

  • Если вы используете кавычки, setInterval() по существу "анализирует" утверждение. Это плохо. Не используйте кавычки.

Ответ 3

window.setInterval() и setInterval() являются точно такими же - часть window неявная и может быть опущена.

и setTimeout, и setInterval будут вычислять строку, но лучше всего отправить ссылку на функцию - поэтому нет кавычек.

Ответ 4

Вызовы в части A одинаковы (если вы не обновите одну из этих функций где-нибудь). Это зависит от предпочтения - я предпочитаю оставить window, поскольку это необязательно.

Для части B вариант 1 определенно является лучшей практикой. Вариант 2 подходит к eval этой строке, а eval почти всегда следует избегать.

Ответ 5

Что касается префикса его с помощью window., то нет разницы в различии. Вы также можете использовать.

Ответ 6

Не уверен в window.setInterval и просто setInterval

Но лучше всегда передавать функцию, а не строку в setInterval и setTimeout

Ответ 7

Еще одна веская причина использовать window.setTimeout вместо просто setTimeout заключается в том, что она позволяет вам указать только одно объявление в jshint, из которого глобальные объекты зависят от вашего кода:

/*global window */

что позволяет получить доступ ко всем методам window без указания каждого из них по отдельности в ваших директивах jshint.