美文网首页
JS基础-作用域与闭包

JS基础-作用域与闭包

作者: 吃紫薯的water | 来源:发表于2019-07-19 21:12 被阅读0次

    1.理解词法作用域和动态作用域

    词法作用域
    定义在词法阶段的作用域
    换言之,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变
    词法作用域

    动态作用域:动态作用域并不关心函数和作用域是如何声明以及在任何处声明的,只关心它们从何处调用。换句话说,作用域链是基于调用栈的,而不是代码中的作用域嵌套

    Extra
    两种运行时修改词法作用域的方法:
    1.eval(类似的有setTimeout、setInterval)
    2.with

    2.理解JavaScript的作用域和作用域链

    作用域:

    作用域链:
    每一个 javaScript 函数都表示为一个对象,更确切地说,是 Function 对象的一个实例
    Function 对象同其他对象一样,拥有可编程访问的属性
    内部属性 [[Scope]] 包含了一个函数被创建的作用域中对象的集合
    这个集合被称为函数的作用域链,它能决定哪些数据能被访问到
    理解 JS 作用域链与执行上下文
    谈谈 JavaScript 的作用域

    3.理解JavaScript的执行上下文栈,可以应用堆栈信息快速定位问题

    【译】理解 Javascript 执行上下文和执行栈
    PS:执行上下文和作用域
    什么是作用域和执行上下文

    4.this的原理以及几种不同使用场景的取值

    [参考]前端基础1-1 this指向

    5.闭包的实现原理和作用,可以列举几个开发中闭包的实际应用

    TODO

    6.理解堆栈溢出和内存泄漏的原理,如何防止

    循环引用

    一个很简单的例子:一个DOM对象被一个Javascript对象引用,与此同时又引用同一个或其它的Javascript对象,

    这个DOM对象可能会引发内存泄露。这个DOM对象的引用将不会在脚本停止的时候被垃圾回收器回收。要想破坏循环引用,

    引用DOM元素的对象或DOM对象的引用需要被赋值为null。

    闭包

    在闭包中引入闭包外部的变量时,当闭包结束时此对象无法被垃圾回收(GC)。

    DOM泄露

    当原有的COM被移除时,子结点引用没有被移除则无法回收。

    Timers计(定)时器泄露

    定时器也是常见产生内存泄露的地方:

    7.如何处理循环的异步操作

    7.1异步操作保存变量(函数封装)
    7.2异步操作顺序执行(await、Promise.then)
    7.3异步操作同步执行(Promise.all、执行完后调用对应方法)

    8.理解模块化解决的实际问题,可列举几个模块化方案并理解其中原理

    1.CommonJS
    Javascript模块化编程(一):模块的写法
    2.AMD
    Javascript模块化编程(二):AMD规范
    Javascript模块化编程(三):require.js的用法
    3.CMD
    4.ES6 import

    相关文章

      网友评论

          本文标题:JS基础-作用域与闭包

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