JavaScript 闭包、定时器

什么是闭包? 有什么作用

  • 因为js只存在局部变量和全局变量,函数内部可以访问外部变量,而外部却不能访问局部变量。闭包就是函数内部在嵌套子函数,这样子函数就可以使用父级函数定义的变量,然后通过return或者定义全局变量的方式把子函数传递出去 ,这样就可以通过某些方法在外部操作内部子函数。
  • 这样做的好处可以独立命名空间不用担心变量同名覆盖的问题
  • 保存私有变量,父级函数就算执行完之后闭包的存在js引擎不会将其内部定义的变量销毁,因为外部需要操作内部子函数的时候,还得需要依赖父级函数定义的变量。

setTimeout 0 有什么作用

  • 通过设置延迟时间为0实现js异步,让该语句后面的语句先执行再执行本身。因为js是单线程处理任务,把每个任务放在队列中,前面的任务完成之后才会开始后一个,设置setTimeout 0 让内部的函数立即插入队列中但不执行,需要等脚本的同步任务(或者任务队列中已有的事件)一结束就立即执行,起到一个尽早执行指定任务的作用。

    console.log(1); 
    setTimeout("console.log(2)", 0); 
    console.log(3); 
    //先输出1 然后3 最后才是2 
    

本文章著作权归没梦想的咸鱼丶和饥人谷所有,转载须说明来源

推荐阅读更多精彩内容

  • 1.什么是闭包? 有什么作用? 闭包就是能够读取其他函数内部变量的函数。举例: 上述代码中fn4就是闭包,通过fn...
    饥人谷_徐小坤阅读 111评论 0 0
  • 闭包及其作用 闭包是能够读取其他函数内部变量的函数;相当于在草原上用栅栏单独围一片地只留一个进出口;只有通过返回出...
    柯良勇阅读 286评论 0 0
  • 小练习: 题目1: 下面的代码输出多少?修改代码让 fnArri 输出 i。使用两种以上的方法 改写方法一: 改写...
    Sketch阅读 37评论 0 0
  • 1.下面的代码输出多少?修改代码让 fnArr[i]() 输出 i。使用 两种以上的方法 2.封装一个汽车对象,可...
    liushaung阅读 67评论 0 2
  • 修炼课16 :细枝末节(读书笔记) 昨天跑襄马。所以,有理由不学习。 但是,今天会补上。 焦点即重点。 对焦点的选...
    小zhu先生阅读 63评论 0 0