Ответ 1
Что бы ни было последним, это окончательное определение $
Вот почему в (например) jQuery есть noConflict()
, который позволяет использовать другую переменную, чем $
для jQuery
Предположим, что это находится на <head>
вашей html-странице.
OOPS, это было немного, чего не было до...:
<script type="text/javascript" src="/include/js/billys.js"></script>
<script type="text/javascript" src="/include/js/susies.js"></script>
<script type="text/javascript" src="/include/js/marys.js"></script>
Порядок трех скриптов может отличаться. Каков был бы результат?
Billy определяет $
как
function $ () {
return false;
}
Susie определяет $
как
function $ () {
return document.getElementById('body');
}
Мэри определяет $
как
function $ () {
alert('I wrote this');
}
Что бы ни было последним, это окончательное определение $
Вот почему в (например) jQuery есть noConflict()
, который позволяет использовать другую переменную, чем $
для jQuery
function $ () {
return false;
}
function $ () {
return document.getElementById('body');
}
function $ () {
alert('I wrote this');
}
$(); // alerts "I wrote this"
Более позднее определение перезаписывает существующее. Вот почему обычно рекомендуется проверять, существует ли функция, прежде чем определять ее. например.
if (typeof $ !== 'function') {
function $(){ /* your code */}
}
или провалиться каким-то разумным способом.
Побеждает последняя функция с тем же именем.