关于JavaScript函数调用的典型例子
- 例一
问打印出什么?
let a=1
function fn(){
console.log(a)
}
答案:无结果,因为没有函数调用
- 例二 问打印出什么?
let a=1
function fn(){
console.log(a)
}
fn()
答案:打印出1
- 例三
问打印出什么?
let a=1
function fn(){
console.log(a)
}
a=2
fn()
答案:打印出2
先执行a=1,再执行a=2,打印出2
- 例四
问打印出什么?
let a=1
function fn(){
console.log(a)
}
fn()
a=2
答案:打印出1
函数的调用时机,先执行a=1,再执行fn()
- 例五
问打印出什么?
let a=1
function fn(){
setTimeout((){
console.log(a)
},0)
fn()
a=2
答案是 2
setTimeout表示尽快去打印,先把代码执行完,先让a=2,然后再 打印,console.log(a)a打印的时机是在a=2之后的。
- 例六
如下代码为什么会打印 6 个 6?
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
解释: 因为setTimeout函数表示尽快执行后面的console.log(i)
所以会先执行完for 循环 ,再打印结果,而for循环执行完后结果是 6
i<6,i++所以打印6次,结果就是6个6,主要是和Javascript函数的调用机制有关。
如何打印出0,1,2,3,4,5呢?
for(let i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
把 let i放在函数里面就可以实现打印结果是0,1,2,3,4,5了 因为Js在for和let一起用的时候会加东西,每次循环多一个i