随笔分类 - JavaScript
摘要:新写的一份Webpack教程,目前在更新中。 在写Babel教程的同时,发现很多Babel的知识与Webpack紧密相连,于是开始撰写Webpack教程。 大家都知道Webpack是一个模块打包工具,但在使用的时候并不容易,因为它有着复杂的体系结构。 目前已经完成了10节教程,大概一个周可以更新2节
阅读全文
摘要:博客:姜瑞涛的官方网站 原文链接:https://www.jiangruitao.com/babel/transform-runtime/ 版权采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议 转载需注明原文作者、链接与版权协议 本节主要讲@babel/plugin-transform-r
阅读全文
摘要:本节配套代码是github仓库 https://github.com/jruit/babel-tutorial 的babel02例子 总体来说,Babel的主要工作有两部分: 语法转换 补齐API 上一节Babel快速入门我们讲的是其实是用Babel进行语法转换,把ES6的箭头函数语法转换成了ES5
阅读全文
摘要:作者:姜瑞涛 Github仓库:https://github.com/jruit/babel-tutorial 博客:姜瑞涛的官方网站 原文链接:https://www.jiangruitao.com/babel/quick-start/ 版权采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协
阅读全文
摘要:闭包都是个老掉牙的话题了,这次又提起,是因为重看Redux源码时发现了applyMiddleware里的用法很巧妙。我们先看一个简单的例子。 打印结果是4还是8呢? 对象b有一个属性name。name是一个方法,函数体里使用了函数a,a是全局作用域的变量,之后a修改了。答案是8。我们不是在作用域里取
阅读全文
摘要:我们知道普通函数调用,this在非严格模式下指向全局对象,在严格模式下是undefined。那箭头函数呢?我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数的this,那直接在顶层用的箭头函数的this在严格模式下是什么呢?不太好解释,我们看下代码 顶层的箭头函数外面没有函数了,
阅读全文
摘要:对于Vue的双向绑定,现在基本是个前端都听说过,面试官也喜欢问这个问题。但对于Vue双向绑定的原理,掘金、博客园和segmentfault等技术社区充斥着大量的错误文章。这些文章的题目基本样子如下 “面试题:如何实现Vue的双向绑定”或“Vue源码解读:Vue双向绑定原理”,文章里写的Vue 2.0
阅读全文
摘要:做了刚新网站 姜瑞涛的官方网站 先看下面的代码,思考一下输出 在浏览器是分别输出Error: 3(正常打印出错误实例,未报错)和 Uncaught Error: 5(一个未捕获错误) 然后思考为何第二块代码未捕获到错误。自己目前的思考是try和catch是在当前调用栈里,遇到setTimeout的时
阅读全文
摘要:以标准的DOM2级事件为例,第二个参数是一个函数,咱们改成bind,看看之后的this是啥。 分别点击这两个元素后,结果如下图 可以看到,初次用bind改变this后,原始DOM2级的事件里获取的this已经不指向调用者的DOM了,这也和我在github记录的一致。
阅读全文
摘要:先看一段代码,猜猜输出结果 无论stopPropagation函数里是否反注释return,结果顺序都是1 2 3 4。为什么会这样,与捕获和冒泡的关系呢?先说结论,直接点击同一个DOM,是处于目标阶段了,和捕获与冒泡无关了。可以看看这篇文章 你真的理解事件冒泡和事件捕获吗? 后面有三个问题,尤其是
阅读全文
摘要:在对Vuex进行模块化开发的时候, const store = new Vuex.Store({ modules: { a: moduleA, b: moduleB } }) 我们可以通过store.state.a取得 moduleA 的状态,在store注入到vue实例的时候,子组件可以通过thi
阅读全文
摘要:之前写过一篇文章 ES6与React中this完全解惑 其实Vue也是相同的道理。在Vue的官方文档中提到: 不要在选项属性或回调上使用箭头函数,比如 created: () => console.log(this.a) 或 vm.$watch('a', newValue => this.myMet
阅读全文
摘要:React里生命周期的哪些方法里可以执行setState,这对于很多使用React很长时间的开发都是个迷惑的问题。 先看一下完整的生命周期。 再看两篇文章 React componentDidUpdate 异步请求的回调可以使用this.setState吗? 无法理解componentDidUpda
阅读全文
摘要:先看一段代码 若只执行下面的for循环,在i5-4200u CPU下,大约3.4秒会输出800000000。当在上方加入setTimeout时,发现大约3.4秒钟输出800000000后接着立刻输出abc。把setTimeout里的1000改成2000或3000发现也是立马输出。但当改成9000后发
阅读全文
摘要:先看下面两段代码 一个是输出0 1 2 3 4一个是输出5个5 为什么let的i,在setTimeout里的匿名函数,i取的还是块级作用域里的i? 一个假设是let的循环中,每次循环,js引擎让i都变成了一个新变量的原因导致的。
阅读全文
浙公网安备 33010602011771号