2011-05-11 42 views
10

的多個圖書館的javascript中,結果如何呢假設這是在您的html頁面的<head>之內。

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> 

訂購3個腳本可能會有所不同。結果會是什麼?

比利定義$作爲

function $() { 
return false; 
} 

蘇西定義$作爲

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

瑪麗定義$作爲

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

對不起,現在看到問題。我正在與外部的js文件進行交流。只是要清楚。 –

+0

正如我在回答中所說的那樣。無論是最後一個,是'$' – Neal

回答

18

無論是最後是第電子商務$

最後定義這就是爲什麼在(例如)jQuery的存在noConflict()它可以讓你使用一個不同的變量比$ jQuery的

+0

的定義所以它總是[永遠],自上而下,而最後的東西是它將使用的東西? –

+0

@Doug你是什麼意思? – Neal

+0

我確認你說的是腳本的順序真的很重要。 –

5

名稱相同贏得最後一個函數。

+2

這是有點像價格是正確的。 –

16

Why not try it?

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

後者定義將覆蓋現有之一。這就是爲什麼在定義它之前檢查一個函數是否已經存在是一個很好的習慣。例如

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

或以某種合理的方式失敗。

+1

如果函數存在,用空白函數覆蓋它?我認爲你需要改變你的最後一個例子。 – Ryan

+0

@minitech呃,是的,'!=='就是我的意思。爲清晰起見添加了評論 – lonesomeday

+0

好的,謝謝:) +1 – Ryan