10

让我们假设这是在<head>您的 html 页面中。

哎呀,这是以前缺少的一点……

<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>

3 个脚本的顺序可能会有所不同。结果会是什么?

比利定义$

function $ () {
 return false;
}

苏西定义$

function $ () {
 return document.getElementById('body');
}

玛丽定义$

function $ () {
 alert('I wrote this');
}
4

3 回答 3

18

最后的就是最后的定义$

这就是为什么在(例如)jQuery 中有它允许您使用与jQuerynoConflict()不同的变量$

于 2011-05-11T19:42:26.640 回答
16

为什么不试试呢?

function $ () {
 return false;
}
function $ () {
 return document.getElementById('body');
}
function $ () {
 alert('I wrote this');
}
$(); // alerts "I wrote this"

后面的定义会覆盖现有的定义。这就是为什么在定义函数之前检查函数是否已经存在通常是一种好的做法。例如

if (typeof $ !== 'function') {
    function $(){ /* your code */}
}

或以某种明智的方式失败。

于 2011-05-11T19:44:13.540 回答
5

最后一个具有相同名称的函数获胜。

于 2011-05-11T19:43:29.383 回答