Как браузеры обрабатывают несколько функций объявлений с тем же именем?
-
14-12-2019 - |
Вопрос
Как браузеры обрабатывают несколько деклараций функций с тем же именем?
Тестовый тест ниже - Примечание. Я знаю, что это не имеет смысла позволять скрипту сервера создавать более одного объявления функции с тем же именем, но мне интересно, поэтому, пожалуйста, осознайте это, прежде чем ответить.Это чисто для поведенческих исследований.
Наши CMS создает несколько экземпляров одного «виджета», который состоит из A
<div class="targetMeWithThis"></div>
.
и A
function startWidgetFunction() {
var param1 = $server.Variable1
var param2 = $server.Variable2
var param3 = $server.Variable3
}
.
Когда сервер отображает страницу, которая имеет множество экземпляров этого виджета на нем, как браузер определяет, какая функция JavaScript используется?Есть ли какие-либо браузеры, которые фактически создают отдельные объекты (функции) для каждого?
Спасибо, J
Решение
в JavaScript, (почти) Все является объектом, включая функции.Такое заявление, перезаписи определение функции работает точно так же, как перезаписывать переменную.
var myFunc = function () {
alert('1');
};
myFunc(); // alerts '1'
var myFunc = function () {
alert('2');
};
myFunc(); // alerts '2'
.
Обратите внимание, что объявление переменной, которая уже объявлена, не является хорошей практикой, а многие инструменты качества кода (Jslint, jshint и т. Д.) предупреждают вас об этом.
Другие советы
В этом конкретном случае:
function = startWidgetFunction() {
var param1 = $server.Variable1
var param2 = $server.Variable2
var param3 = $server.Variable3
}
.
Браузер бросит ошибку, потому что function
является зарезервированным ключевым словом.
Учитывая другое имя переменной, то вы просто назначаете значение (Global) переменной.Переменная будет перезаписана новой (идентичной) функцией с каждым последовательным выполнением скрипта виджета.