Javascript 1.引用错误:未定义函数。2.数组未传递到函数中
我有一个非常基本的jsfiddle。我得到函数的引用错误。我不明白这样做的原因。以下是JSFIDLE: JavaScript:Javascript 1.引用错误:未定义函数。2.数组未传递到函数中,javascript,html,jsfiddle,Javascript,Html,Jsfiddle,我有一个非常基本的jsfiddle。我得到函数的引用错误。我不明白这样做的原因。以下是JSFIDLE: 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: 点击我
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:
点击我!
我在应用程序中面临的真正问题是,当我将数组传递给f2时,只有第一个元素传递给f2,而不是整个数组。我试图使用JSFIDLE测试它,但首先我需要解决引用错误。尝试将它绑定到窗口,就像这样
window.f1 = function(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
当fiddle设置为onLoad时,它会在窗口中包装代码。onLoad=function(){/*code*/}
,这意味着范围不再是全局的
我在申请中面临的真正问题是当我通过考试时
数组传递给f2,只有第一个元素传递给f2,而不是整个元素
数组
正在传递数组,只是alert()将其格式设置为与显示的原始字符串完全相同,这有误导性。尝试向arr[0]或arr[1]发出警报。这是范围问题,Joseph的方法正确。 解释 如果使用窗口变量,则可以强制全局范围。 但是,您可以更改声明顺序以更正代码
<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>
函数f1(){
var str=“aaa、bbb、ccc、ddd、eee、fff”;
var strArr=str.split(“,”);
f2(横向,横向长度);
}
功能f2(arr、len){
警报(len);
警报(arr);
}
点击我!
这意味着,如果您在浏览器解释时首先声明javascript代码,它将能够找到您的函数
函数f1(){
var str=“aaa、bbb、ccc、ddd、eee、fff”;
var strArr=str.split(“,”);
f2(横向,横向长度);
}
功能f2(arr、len){
警报(len);
警报(arr);
}
点击我!
在javascript面板的右上角->单击设置图标->将加载类型更改为无换行
值有很多重复项--您还可以看到,谢谢,它甚至可以使用f1=function(){……}。你能解释一下这背后的原因吗?为什么它不能使用函数f1(){…}?正如Arun所说,加载类型被设置为onLoad。On load将代码包装在窗口中。onload=function(){}
,这意味着您的函数不再在全局范围中定义。
<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>