JS 函数的执行时机
说到JS函数的时机,我就有必要说一下这个setTimeout。
1.例:这个题的答案是多少?
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
正确答案:6个6
解析
- setTimeout有等会再执行的意思。(如:你正在打吃鸡游戏,你妈突然叫你吃饭了。这时,你肯定是答:马上来。但是实际情况就是你把游戏打完才去吃的饭;setTimeout也是这样)
- 这个题首先他是一个for循环,当他已经开始循环了,我们再叫打印出i。所以,他要等for循环执行完后再打印;但是当for循环执行完后,其实他对应的值就是6;这个时候再去打印6次,肯定就是6个6。
2. 例:求出这个题的答案?
for(let i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
答案:0,1,2,3,4,5
解析:
- 当for和let一起引用的时候,会把i复制一份。所这个例子种,每当for循环一次,都会复制一个i并打出来。
除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
1. let person ={
name:'justin'
f(){
console.log(this.name)
}
}
person.f.call({name:'0'})
person.f.call({name:'1'})
person.f.call({name:'2'})
person.f.call({name:'3'})
person.f.call({name:'4'})
person.f.call({name:'5'})
2. function fn(x){
if(x<6){
return x
}
}
fn(1)
fn(2)
fn(3)
fn(4)
fn(5)