JS模块化编程

2019-03-10
阅读 7 分钟
2.7k
写 JS 为什么需要模块化编程? 当写前端还只是处理网页的一些表单提交,点击交互的时候,还没有强化 JS 模块化的概念,当前端逻辑开始复杂,交互变得更多,数据量越来越庞大时,前端对 JS 模块化编程的需求就越加强烈。

JS异步编程之Promise

2019-02-24
阅读 3 分钟
4.2k
《JS异步编程之 callback》一文我们了解了“JS 是基于单线程事件循环”的概念构建的,回调函数不会立即执行,由事件轮询去检测事件是否执行完毕,当执行完有结果后,将结果放入回调函数的参数中,然后将回调函数添加到事件队列中等待被执行。

JS异步编程之callback

2019-02-17
阅读 3 分钟
2.8k
为什么 JS 是单线程? 众所周知,Javascript 语言的执行环境是"单线程"(single thread)。 所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。 而浏览器是多线程的,JS 线程就是其中一个: 浏览器 GUI 渲染线程 JavaScript 引擎线程 浏览器定时...

JS专题之继承

2019-02-10
阅读 5 分钟
1.5k
众所周知,JavaScript 中,没有 JAVA 等主流语言“类”的概念,更没有“父子类继承”的概念,而是通过原型对象和原型链的方式实现继承。

JS专题之垃圾回收

2019-02-09
阅读 5 分钟
1.7k
在讲 JS 的垃圾回收(Garbage Collection)之前,我们回顾上一篇《JS专题之memoization》,memoization 的原理是以参数作为 key,函数结果作为 value, 用对象进行缓存起来,以内存空间换 CPU 执行事件。memoization 的潜在陷阱即是严格意义的缓存有着完善的过期策略,而普通对象的键值对并没有。

JS专题之memoization

2019-02-08
阅读 3 分钟
6.3k
在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理过的输入,而返回已缓存的结果。 -- wikipedia

JS专题之严格模式

2019-02-08
阅读 4 分钟
2k
顾名思义,JavaScript 严格模式就是让 JS 代码以更严格的模式执行,不允许可能会引发错误的代码执行。在正常模式下静默失败的代码,严格模式下就会抛出错误。

JS专题之数组展开

2019-02-07
阅读 3 分钟
3.8k
前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序; {代码...} 数组去重我们前面在《JS专题之数组去重》已经讲过了,那么前一步的多重数组展开成单层数组,该如何处理呢? 这就来到我们所要探讨的数组展开了。 根据需求的特点,数组展开需要进行迭代和...

JS专题之深浅拷贝

2019-02-04
阅读 3 分钟
2k
那么这就涉及到了 JS 中对数据的深浅拷贝问题,所谓深浅拷贝,浅拷贝的意思就是,你只是复制了对象数据的引用,并没有把内存里的值另外复制一份,那么深拷贝就是把值完整地复制一份新的值。

JS专题之数组去重

2019-01-28
阅读 4 分钟
2.4k
数组去重在日常开发中的使用频率还是较高的,也是网上随便一抓一大把的话题,所以,我写这篇文章目的在于归纳和总结,既然很多人都在提的数组去重,自己到底了解多少呢。又或者是如果自己在开发中遇到了去重的需求,自己能想到更好的解决方案吗。

JS专题之函数柯里化

2019-01-26
阅读 3 分钟
2.6k
#### 前言 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

JS专题之数据类型和类型检测

2018-12-15
阅读 5 分钟
1.3k
本文共 1750 字,读完只需 7 分钟 数据类型有哪些? ECMAScript 的数据类型分为简单数据类型(也被称为基本数据类型,原始数据类型): Undefined Null String Number Boolean 在 ES6 中新增一个简单数据类型 Symbol,所以简单数据类型总共有 6 个,还有复杂数据类型(也叫作引用数据类型):Object。 所有 js 中所有的...

JS专题之节流函数

2018-12-13
阅读 6 分钟
2.3k
节流函数(throttle)就是让事件处理函数(handler)在大于等于执行周期时才能执行,周期之内不执行,即事件一直被触发,那么事件将会按每小段固定时间一次的频率执行。

JS专题之去抖函数

2018-12-08
阅读 6 分钟
3.6k
在用户和前端页面的交互过程中,很多操作的触发频率非常高,比如鼠标移动 mousemove 事件, 滚动条滑动 scroll 事件, 输入框 input 事件, 键盘 keyup 事件,浏览器窗口 resize 事件。

JS专题之事件循环

2018-11-24
阅读 5 分钟
1.5k
进程是系统资源分配一个独立单位,一个程序至少有一个进程。比方说:一个工厂代表一个 CPU, 一个车间就是一个进程,任一时刻,只能有一个进程在运行,其他进程处于非运行状态。

JS专题之事件模型

2018-11-21
阅读 6 分钟
1.2k
用户与网页交互是通过事件实现的,事件刚开始是作为分担服务器负载的一个手段,起初没有统一的规范,直到 DOM2 级,网景和 IE 才开始有各自的 API 规范。

JavaScript专题之模拟实现new

2018-11-10
阅读 3 分钟
1.1k
最近工作太忙,快接近两周没更新博客,总感觉有一些事情等着自己去做,虽然工作内容对自己提升挺大,但我总觉得,一直埋着头走路,偶尔也需要抬起头来,看看现在和自己的期望向是否脱轨,所以周末还是选择来星巴克写些文字。

JavaScript专题之模拟实现bind

2018-10-31
阅读 3 分钟
1.2k
前一篇文章我们尝试模拟实现了 call 和 apply 方法,其实 bind 函数也可以用来改变 this 的指向。bind 和 call和 apply 两者的区别在于,bind 会返回一个被改变了 this 指向的函数。

JavaScript专题之模拟实现call和apply

2018-10-29
阅读 5 分钟
1.2k
JS 函数 call 和 apply 用来手动改变 this 的指向,call 和 apply 唯一的区别就在于函数参数的传递方式不同,call 是以逗号的形式,apply 是以数组的形式:

JavaScript之例题中彻底理解this

2018-10-28
阅读 5 分钟
1.4k
前面的文章讲解了 JavaScript 中的执行上下文,作用域,变量对象,this 的相关原理,但是我后来在网上看到一些例题的时候,依然没能全做对,说明自己有些细节还没能掌握,本文就结合例题进行深入实践,讨论函数在不同的调用方式 this 的指向问题。

JavaScript之按值传递

2018-10-24
阅读 2 分钟
998
本文共 1200 字,读完只需 5 分钟 概述 参数的传递分为按值传递和按引用传递,而 JavaScript 中参数的传递只有按值传递。 ECMAScript 中所有函数的参数都是按值传递的。 所谓按值传递就是: 把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。 -- 《JavaScript 高级程序设计》 我们知道 JS ...

JavaScript之arguments

2018-10-23
阅读 2 分钟
1.2k
本文共 635 字,读完只需 3 分钟 概述 JavaScript中的函数与其他面向对象语言有几个不同的地方。 没有函数重载 有一个表示实参列表的类数组对象 arguments 一、函数重载 简单来说,JAVA 同一个类中允许几个函数有同样的函数名称,但是参数声明不一样,这就是函数重载。 但是 JS 不支持函数重载: {代码...} 如果 js 中定...

JavaScript之this

2018-10-21
阅读 3 分钟
1.1k
在 JAVA 中,this 的概念很透彻,就是指向当前对象(方法和属性的持有者),在编译的时候就能确定 this 指代,而由于 JavaScript 中 this 是动态绑定,或称为运行期绑定的,在绝大多数情况下,函数的调用方式决定了 this 的值,所以在 JS 中不能在定义时决定地定义 this 是哪个上下文对象。

JavaScript之闭包

2018-10-19
阅读 3 分钟
1k
但是,闭包在 JS 代码可以说是随处可见,闭包也只是计算机领域的一个概念而已,它的存在是因为 JS 的一些语言特性,比如:函数式语言,执行上下文,执行上下文栈,作用域链,词法作用域。

JavaScript之作用域链

2018-10-18
阅读 2 分钟
1.3k
本文共 1200 字,读完只需 4 分钟 概述 JavaScript 中的可执行代码有其执行上下文,在执行上下文中,有三个重要的元素: 变量对象(variable object) 作用域链(scope chain) this 其中,变量对象是上下文中变量声明和函数声明的集合。 this 表示是变量对象被谁所持有,this 总是指向当前的上下文。 而作用域链则控制着变...

JavaScript原型与原型链

2018-10-17
阅读 4 分钟
1.5k
在 JavaScript 中,是一种面向对象的程序设计语言,但是 JS 本身是没有 “类” 的概念,JS 是靠原型和原型链实现对象属性的继承。

JavaScript之变量对象

2018-10-17
阅读 3 分钟
1.1k
概述 JavaScript 的可执行代码,具有执行上下文,而每个上下文包括以下 3 个属性: 变量对象(variable object, 简称 VO) 作用域链(scope chain) this 变量对象提供了当前环境所需的变量和函数 作用域链用于保证 JS 中变量和函数有序地访问 this 为函数提供了执行者对象 一个上下文的执行周期可以用下图示意: 本文就...

JavaScript 之执行上下文

2018-10-16
阅读 2 分钟
1.3k
JavaScript 是函数式编程语言,作用域也是以函数为单位,那么,这些函数代码块是怎么样的顺序进行的呢, JS 的可执行代码又分为 3 种,不同类型的代码有不一样的执行环境。本文就梳理有关 JS 执行上下文(execution context),也叫执行环境的知识。

JavaScript之变量及作用域

2018-10-13
阅读 3 分钟
2.4k
变量,编程语言中我们用来模拟现实概念的工具,比方说,变量可以表示对象,数组,数字,字符。既然是工具,那么就用工具的适用范围,这个工具在这个适用范围中才有效,在编程语言中,我们称这个适用范围叫作用域(scope)。

修改 Idea 终端 Terminal 为 GitBash 或 Cmder

2018-01-05
阅读 1 分钟
29.2k
打开设置(快捷键: Ctrl + Alt + S ),进入 Plugins,搜索栏搜索 Terminal,查看 Terminal插件是否打勾选中,如果没有,请打勾。