写代码啦
《JS 函数的执行时机》
回复数(0) 浏览数(59)
{{topic.upvote_count || 0}} 编辑 回复

函数的执行时机对函数执行的结果有重要影响,执行时机不同,结果也可能不同

//例一
let a = 1
function fn(){
console.log(a)
}
fn() //打印出1
//例二
let a = 1
function fn(){
console.log(a)
}
a = 2
fn() //打印出2

两个例子,相同的函数,执行时机的不同而导致打印结果不同

如下代码会打印出6个6

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

原因分析:setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。
它将for循环中的六次console.log(i)的执行时间推迟到了for循环结束之后,而此时i的值为6,所以结果为
打印出6个6

打印出 0、1、2、3、4、5的方法:let和for结合,代码如下

for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
{{topic.upvote_count || 0}}

函数的执行时机对函数执行的结果有重要影响,执行时机不同,结果也可能不同

//例一
let a = 1
function fn(){
console.log(a)
}
fn() //打印出1
//例二
let a = 1
function fn(){
console.log(a)
}
a = 2
fn() //打印出2

两个例子,相同的函数,执行时机的不同而导致打印结果不同

如下代码会打印出6个6

let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

原因分析:setTimeout()方法设置一个定时器,该定时器在定时器到期后执行一个函数或指定的一段代码。
它将for循环中的六次console.log(i)的执行时间推迟到了for循环结束之后,而此时i的值为6,所以结果为
打印出6个6

打印出 0、1、2、3、4、5的方法:let和for结合,代码如下

for(let i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}
59
回复 编辑