使用$的多个图书馆的javascript结果如何?

Dou*_*ain 10 javascript dollar-sign

我们假装这是在<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>
Run Code Online (Sandbox Code Playgroud)

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

比利定义$

function $ () {
 return false;
}
Run Code Online (Sandbox Code Playgroud)

苏西定义$

function $ () {
 return document.getElementById('body');
}
Run Code Online (Sandbox Code Playgroud)

玛丽定义$

function $ () {
 alert('I wrote this');
}
Run Code Online (Sandbox Code Playgroud)

Nea*_*eal 18

无论最后是什么,最终的定义是$

这就是为什么在(例如)jQuery noConflict()中允许你使用不同于$jQuery的变量


lon*_*day 16

为什么不试试呢?

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

后面的定义会覆盖现有的定义.这就是为什么在定义函数之前检查函数是否已存在的一般做法.例如

if (typeof $ !== 'function') {
    function $(){ /* your code */}
}
Run Code Online (Sandbox Code Playgroud)

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


Ry-*_*Ry- 5

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