1. Reference Error: Function not defined. 2. Array not getting passed into a function
1. Reference Error: Function not defined. 2. Array not getting passed into a function
我有一个非常基本的 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 对其进行测试,但首先我需要解决引用错误。
尝试像这样将它绑定到 window
window.f1 = function(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
由于 fiddle 设置为 onLoad,它将您的代码包装在 window.onload=function(){/*code*/}
中,这意味着作用域不再是全局的。
The real problem I am facing in my application is that when I pass the
array to f2, only first element is passed to f2 and not the entire
array.
正在传递数组,只是 alert() 将它的格式完全按照您显示的原始字符串进行格式化,这是一种误导。尝试提醒 arr[0] 或 arr[1].
范围问题,约瑟夫走对了
解释
如果您使用 window 变量,您可以强制使用全局范围。
但是您可以更改声明顺序以更正您的代码。
<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>
我有一个非常基本的 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 对其进行测试,但首先我需要解决引用错误。
尝试像这样将它绑定到 window
window.f1 = function(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
由于 fiddle 设置为 onLoad,它将您的代码包装在 window.onload=function(){/*code*/}
中,这意味着作用域不再是全局的。
The real problem I am facing in my application is that when I pass the array to f2, only first element is passed to f2 and not the entire array.
正在传递数组,只是 alert() 将它的格式完全按照您显示的原始字符串进行格式化,这是一种误导。尝试提醒 arr[0] 或 arr[1].
范围问题,约瑟夫走对了
解释
如果您使用 window 变量,您可以强制使用全局范围。 但是您可以更改声明顺序以更正您的代码。
<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>