但如果参数是个数组或对象(引用类型),则函数内部是可以影响到外部传参之前的变量的值
JavaScript函数传参传递的仍然是值传递,而不是引用传递
别的函数是调不到一个函数中的局部变量,因为局部变量属于这个函数的私有变量。但可以把局部变量变为这个函数的属性。如:
把name变量变为te()函数的属性。【秉着学习的态度,如果有错,请指出】
var odiv=document.querySelector('#div2')var arr=[]
var chz=odiv.offsetLeft
var timer=null
for(var i=20i>0i=i-2){
arr.push(i,-i)
}
arr.push(0)
var num=0
odiv.onclick=function(){
//var num=0为什么放在这就可以重复的点击有效;放在上面只能点一次;num不是应该能按作用域链找上去的吗?
timer=setInterval(function(){
odiv.style.left=chz+arr[num]+'px'
num++
if(num==arr.length){
clearInterval(timer)
}
},30)
console.log(num)
}
我在代码中加入了console.log(num),你可打开控制台,看看不同情况输出的num值。
其实就是你把num变量放在函数中,是局部变量,每次单击的时候,都会重新赋值0再开始运行下面的代码,所以是可以重复点击。
而放在上面,是全局变量,每次单击后会根据你下面的代码num++而不同了,根据你写的代码,自然就没有效果啦。