Какой путь лучше, 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: следует использовать кавычки и скобки или нет? Мне сказали, что это плохая идея использовать цитаты и скобки для этой ситуации.
Ответы
Ответ 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
.