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 
    

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

推荐阅读更多精彩内容