Многие разработчики не одобряют практику передачи строк в setTimeout из-за проблем с производительностью, потенциальных рисков безопасности и того, что она устарела статус. Однако могут быть редкие сценарии, в которых этот синтаксис может оказаться полезным.
Традиционный синтаксис для setTimeout и setInterval включал передачу строки, представляющей код для выполнения. Например:
setTimeout('doSomething(someVar)', 10000);
Однако современный JavaScript поощряет использование вместо этого ссылок на функции:
setTimeout(function() {
doSomething(someVar);
}, 10000);
Споры возникают при рассмотрении вопроса о том, существуют ли какие-либо веские причины для отклонения от рекомендуемого синтаксиса. Одним из возможных аргументов может быть желание получить доступ к функции или переменной, которая находится в глобальной области видимости, но могла быть переопределена локально.
Несмотря на это обоснование, использование строк в setTimeout настоятельно не рекомендуется. Доступ к глобальным переменным по-прежнему возможен через свойства объекта окна. Например:
setTimeout(window.doSomething(someVar), 10000);
Вероятно использование строк в качестве аргументов для setTimeout и setInterval. обусловлено историческими факторами. Ранние версии JavaScript поддерживали только строки. Возможность передачи ссылок на функции появилась позже. Чтобы обеспечить обратную совместимость, браузеры по-прежнему допускают строковый синтаксис, даже несмотря на то, что он устарел.
Хотя в некоторых случаях технически возможно передавать строки в setTimeout, обычно это недопустимо. рекомендуется из-за наличия альтернативных подходов. Использование ссылок на функции обеспечивает повышенную производительность, повышает безопасность и соответствует современным рекомендациям по кодированию. Поэтому следует избегать устаревшего строкового синтаксиса ради ясности, удобства сопровождения и общего качества кода.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3