javascript需要定义形参吗 形参与全局变量同名有坏处吗 代码贴在了下面 我不用for in 用原来的for就是对的
发布网友
发布时间:2022-04-27 04:24
我来回答
共1个回答
热心网友
时间:2023-10-02 23:51
主要错误在于 for ...in 这里。和变量同名没有关系。
for(index in myArray) 是遍历得到myArray的索引值。而前面刚刚初始过myArray=new Array(3);
但是这并不意味着 索引值就是0,1,2。此时只能说索引值是多少还不知道。所以程序运行不正常。(可以在for中加一句alert(index); 会发现根本没有运行到for循环中。)
如果用for(var i=0; i<3; i++){ myArray[i] = num; ...} 就没有这个问题。
当然,还有一个办法可以证明,这个问题和同名变量定义无关:
在var myArray = new Array(3); 后加一句:
myArray[0]=0;myArray[1]=0;myArray[2]=0;
这时候再用 for .. in ,就没有问题。此时index已经存在了!
满意请采纳。追问我试了试,只要我初始化了数组 ,不管是像你那种初始化 ,还是定义数组时就初始化, 都能运行, 那是不是只有初始化数组之后 index才会被数组的下标自动填充?
还有个问题就是:js里面是不是不用像c那样在函数括号里定义形参 还是在定义函数时形参已经定义了
嘿嘿 我加你分啊 我初学者 想弄得明白点
追答1. 只有初始化数组之后 index才会被数组的下标自动填充。对的。
2. js中定义参数的方法和C没有区别。考虑到js是弱类型语言,所以参数不需要指定类型而已。如下面两个例子:
function show(){ //没有参数
....
}
function add(n1, n2) { //有参数的
...
}