2013-04-09 126 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控制台(如果您的浏览器没有,请切换到现代浏览器),它会告诉您网址是否有误。