vue - 本质是 MVVM 框架,由 MVC 发展而来 React - 本质是前端组件化框架,不是一个完整的MVC框架,可以认为是MVC中的V(View) vue和reac...
React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库,React 主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图) Rea...
什么是webpack更新? 模块热替换(HMR - Hot Module Replacement)是 webpack 提供的最有用的功能之一。它允许在运行时替换,添加,删除各...
重新理了下思路,觉得作者还是要把编译环境写出来,不然很容易导致误解。
1. 浏览器标准环境中(比如说谷歌webkit内核),是一个宏任务紧接着所有微任务执行。
2. 在node环境中,则又不一样了,是一个类型宏任务队列执行完,再去执行微任务。
自己运行一下代码,就可以发现了。
不知道这样理解是否正确,还有想问一下作者,为什么执行完setImmediate的所有微任务,才算是第二轮结束,这里觉得比较匪夷所思。
1.为什么要有事件循环机制? 众所周知,js是一门单线程的语言,那就像只有一个窗口的银行,客户需要排队一个一个办理业务,同理js任务也要一个一个顺序执行。如果一个任务耗时过长...
个人理解,闭包就是在函数外部调用函数内部的函数,本来函数外部是无权访问函数内部的函数或者变量,但是通过外部变量引用或者返回函数方式使得函数能够在外部调用,在调用时执行上下文创建和执行过程中保留了变量对象和作用域链使其不会被垃圾回收的过程就是闭包
@这波能反杀 可是这里怎么说在为引擎生成可执行代码前,变量就已经声明了
前端基础进阶(三):变量对象详解变量对象,在新版本中,准确的说法应该是环境记录对象,而环境记录对象,又区分词法环境对象与变量环境对象,词法环境对象用于解析当前上下文中,由 const 声明的标识符引用,变量...
@这波能反杀 事实上编译器会进行如下处理。
1. 遇到 var a,编译器会询问作用域是否已经有一个该名称的变量存在于同一个作用域的
集合中。如果是,编译器会忽略该声明,继续进行编译;否则它会要求作用域在当前作
用域的集合中声明一个新的变量,并命名为 a。
2. 接下来编译器会为引擎生成运行时所需的代码,这些代码被用来处理 a = 2 这个赋值
操作。引擎运行时会首先询问作用域,在当前的作用域集合中是否存在一个叫作 a 的
变量。如果是,引擎就会使用这个变量;如果否,引擎会继续查找该变量(查看 1.3
节)。
以上是《你不知道的JavaScript上卷》这本书的原话,我看了后和波老师的对比,我就有些搞不懂了
前端基础进阶(三):变量对象详解变量对象,在新版本中,准确的说法应该是环境记录对象,而环境记录对象,又区分词法环境对象与变量环境对象,词法环境对象用于解析当前上下文中,由 const 声明的标识符引用,变量...
波老师我想问下,我看《你不知道的js》这本书说变量是在编译期声明在当前作用域,然后你这个又说变量是在执行上下文创建阶段声明在变量对象里的,到底是怎样的,麻烦解答下
前端基础进阶(三):变量对象详解变量对象,在新版本中,准确的说法应该是环境记录对象,而环境记录对象,又区分词法环境对象与变量环境对象,词法环境对象用于解析当前上下文中,由 const 声明的标识符引用,变量...
上面例子说 window.getAge = getAge;时形成了闭包,但第六章节最后你又讲闭包是在内层函数运行时才确认创建,且内层函数必须访问了上层作用域链中的变量对象,这感觉有点矛盾
前端基础进阶(九):函数与函数式编程纵观JavaScript中所有必须需要掌握的重点知识中,函数是我们在初学的时候最容易忽视的一个知识点。在学习的过程中,可能会有很多人、很多文章告诉你面向对象很重要,原型很重要...
既然闭包是在内层函数调用的时候才确定,那闭包怎么阻止外层函数运行完后的垃圾回收?还有闭包那一章节你说是由于引用的关系导致外层函数的变量对象被保存下来了,那如果我内层函数没用使用外层函数的变量,那这个变量怎么回收,麻烦解答下,有点不理解
前端基础进阶(八):在chrome开发者工具中观察函数调用栈、作用域链与闭包前端开发中,有一个重要的技能,叫做断点调试。 利用chrome开发者工具中的断点调试,我们能够一步步观察JavaScript的执行过程,直观感知函数调用栈、作用域链、变量对象...