2013-04-09 139 views
-1

爲什麼說 - '_'是未定義的,下面是一個基本的簡單例子和小提琴。謝謝爲什麼說 - 下劃線未定義

http://jsfiddle.net/fuEfq/

-------------index.html--------------------------- 
<html> 
<head> 

    <title></title> 

     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript" src="underscore.js"></script>  
     <script type="text/javascript" src="myJs.js"></script> 

    <head> 

    <html> 

    <body> 


    <script> 

    <button type="button" onclick = "loadThis();">Click Me!</button> 



    </script> 

    </body> 

</html> 

-------------myJs.js--------------------------- 


var loadThis = function(){ 

    vas x = _.uniq([1, 2, 1, 3, 1, 4]); 

    alert(x); 

}; 
+1

JS Fiddle中的示例代碼不會給出與您在問題中描述的相同的錯誤。請提供一個準確反映您問題的示例。 – Quentin 2013-04-09 09:05:56

+0

由於您選擇了在onLoad處理程序中加載JavaScript並將其定義爲本地變量的選項,因此您的小提琴找不到'loadThis'。如果你解決這個問題,它會按預期工作。明顯的懷疑是'underscore.js'沒有加載。所有現代瀏覽器都有工具來驗證。 – 2013-04-09 09:09:05

+0

你確定'underscore.js'腳本是從你的頁面正確加載的嗎?檢查錯誤控制檯。 – Bergi 2013-04-09 09:17:56

回答

3

與提琴的問題是,loadThis被包含在的jsfiddle爲您提供(包裝您的代碼)在函數中,錯誤的是loadThis ,而不是_,是未定義的。 (如果你看左邊,你會看到你在第二個下拉列表中選擇了「onLoad」,這意味着jsFiddle會爲你生成一個window.load回調,並將你的代碼放在回調中。)如果我用this updated fiddle ,它工作正常。

如果你在你的真實代碼中看到一個錯誤,說明_未定義,這表明你沒有(成功)加載underscore.js。這通常是因爲您沒有爲其添加script標記,script標記以某種方式變形,或者標記中的網址錯誤。如果您查看瀏覽器的JavaScript控制檯(如果您的瀏覽器沒有,請切換到現代瀏覽器),它會告訴您網址是否有誤。