美文网首页
2020-11-07

2020-11-07

作者: 二荣xxx | 来源:发表于2020-11-07 17:03 被阅读0次

JS 函数的执行时机

函数的执行时机不同结果也会不同,js也分为同步执行和异步执行

简单的举几个同步执行例子
1、

let a = 1
function fn(){
console.log(a)
}
fn()
答案:a=1

原因:a被赋值为1,调用fn打印出的a当然为1
2、

let a = 1
function fn(){
console.log(a)
}
a = 2
fn()
答案:a=2

原因:a被赋值为2之后执行的fn
3、

let a = 1
function fn(){
console.log(a)
}
fn()
a = 2
答案:a=1

原因:调用fn之后a才被赋值为2,在执行fn时a的值时1



然后是异步执行的例子
1、
let a = 1
function fn(){
setTimeout(()=>{
console.log(a)
},0)
}
fn()
a = 2
答案:2

原因:setTimeout是延迟执行的意思,在当前任务执行完成后再打印a的值,因此在调用fn时a的值为2,打印出的a的值就是2了
2、

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

原因:for循环大家都知道,只有在条件不满足时才会结束循环,所以在i=6时跳出循环(i=5时又走了一个i++才跳出循环),此时才执行setTimeout,而循环执行了六次,因此打印出的结果为6个6
3、

for(let i = 0; i<6; i++){
    setTimeout(()=>{
        console.log(i)
    },0)
}
答案:1、2、3、4、5

原因:每次循环 i 都会单独复制一份再setTimeout,console.log(i),因此此时打印的 i 就和大部分新人的想法一致了

相关文章

  • 周六 2020-11-07 23:30 - 06:43 晴 13

    2020-11-07 完成任务的一天,还去散步了,真棒周六 2020-11-07 23:30 - 06:43 晴 ...

  • 2020-11-07

    【318号】2020-11-07点赞列表 http://www.jianshu.com/p/d73789490b9...

  • 翻砂十年甲壳花50hb10001

    原创 李大叔 清江风情 2020-11-07 图谱编号:ESB_TP_50_hb10001 直径:36.2~36....

  • 光明来自黑暗

    南怀瑾:光明来自黑暗 原创 致敬南怀瑾 修行居 2020-11-07 修行居 道家养生 | 阴阳数术 太极八卦 |...

  • 【基因组】那些接收植物基因组de novo组装文章的期刊(202

    2020-11-07 update: 发现一个新的第三梯度的期刊. Plant Direct. 之后把新找到的期刊...

  • 【我】是谁?!

    我怎么如此幸运-重生71-戴红霞(2020-11-07) 我怎么如此幸运-【我】是谁?! 1.我怎么如此幸运意想不...

  • 约练收获

    中原焦点团队 成长分享852天 2020-11-07 本周约练第一、二场(总312、313场) 今天连续约了两场,...

  • 2020-11-07

    2020-11-07 姓名 :曹静杰 企业名称 : 辽宁辽阳丛迪服装有限公司 组别 388期 反省1组 志工529...

  • 江城子2021-07-04

    强国征文|赵光辉:江城子·我的兵团 山东学习平台 2020-11-07 作者:赵光辉 蒙组织之选,授援疆之责,吾欣...

  • 书展、公园、挖沙子

    幸福日志2020-11-07、8 周六日 晴 周六日两天天气大好,依旧带娃暴走。 书展、公园、挖沙子!

网友评论

      本文标题:2020-11-07

      本文链接:https://www.haomeiwen.com/subject/qiafbktx.html