1.参考错误:功能未定义。 2.数组未传递给函数

时间:2015-12-22 04:57:52

标签: javascript html jsfiddle

我有一个非常基本的jsfiddle。我收到该函数的引用错误。我不明白同样的原因。这是jsfiddle:

https://jsfiddle.net/akshaysuri/xxmq8e3m/

JavaScript的:

function f1(){
    var str = "aaa,bbb,ccc,ddd,eee,fff";
    var strArr = str.split(",");
    f2(strArr,strArr.length);
}

function f2(arr,len){
  alert(len);
  alert(arr);
}

HTML:

 <body>
 <button type="button" onclick="f1()">Click Me!</button> 
 </body>

我在我的应用程序中遇到的真正问题是,当我将数组传递给f2时,只有第一个元素传递给f2而不是整个数组。我试图用jsfiddle测试它,但首先我需要解决参考错误。

2 个答案:

答案 0 :(得分:1)

尝试将其绑定到窗口,如此

window.f1 = function(){
    var str = "aaa,bbb,ccc,ddd,eee,fff";
    var strArr = str.split(",");
    f2(strArr,strArr.length);
}

当小提琴设置为onLoad时,它会将您的代码包装在window.onload=function(){/*code*/}中,这意味着范围不再是全局的。

  

我在申请中遇到的真正问题是,当我通过时   数组到f2,只有第一个元素传递给f2而不是整个元素   阵列。

正在传递数组,只是alert()将其格式化为原始字符串,这是误导性的。尝试警告arr [0]或arr [1]。

答案 1 :(得分:1)

这是一个范围问题,约瑟夫是正确的。

<强>说明

如果使用窗口变量,则可以强制使用全局范围。 但是,您可以更改声明顺序以更正代码。

 <body>
 <script>
 function f1(){
    var str = "aaa,bbb,ccc,ddd,eee,fff";
    var strArr = str.split(",");
    f2(strArr,strArr.length);
}

function f2(arr,len){
  alert(len);
  alert(arr);
}
 </script>
 <button type="button" onclick="f1()">Click Me!</button> 
 </body>

这意味着如果您在浏览器解释时首先声明您的javascript代码,它将能够找到您的功能。

 <body>
 <script>
 function f1(){
	var str = "aaa,bbb,ccc,ddd,eee,fff";
	var strArr = str.split(",");
	f2(strArr,strArr.length);
}

function f2(arr,len){
  alert(len);
  alert(arr);
}
 </script>
 <button type="button" onclick="f1()">Click Me!</button> 
 </body>