基本数据结构和查找算法

2018-09-06
阅读 16 分钟
1.8k
本文包括简单的数据结构和查找算法,属于个人整理。初学编程可以用这里的东西联系一下,看一看也挺有意思博主个人不认为js中算法数据结构不重要,毕竟这是程序开发的基本功。本文还会根据博主学习进展和时间安排不定期更新

基于 Javascript 排序算法

2018-09-06
阅读 9 分钟
4.2k
个人感觉:javascript对类似排序查找这样的功能已经有了很好的封装,以致于当我们想对数组排序的时候只需要调用arr.sort()方法,而查找数组元素也只需要调用indexOf()方法或lastIndexOf()方法,我们忽略了其内部的实现。而今,js能开发的项目越来越庞大,对性能和效率要求也越来越高,虽然众多的库和框架也可以帮我们应...

Javascript模块化开发基础

2018-09-06
阅读 7 分钟
1.7k
JS 作为一名编程语言,一直以来没有模块的概念。严重导致大型项目开发受阻,js 文件越写越大,不方便维护。其他语言都有模块的接口,比如 Ruby 的 require,python 的 import,C++ 天生的 #include,甚至 CSS 都有 @import。在 ES6 之前,有主要的2个模块化方案:CommonJS 和 AMD。前者用于服务器,后者用于浏览器。Comm...

Javascript 函数、作用域链与闭包

2018-09-06
阅读 7 分钟
2.1k
闭包是js中一个极为NB的武器,但也不折不扣的成了初学者的难点。因为学好闭包就要学好作用域,正确理解作用域链,然而想做到这一点就要深入的理解函数,所以我们从函数说起。

Javascript this详解

2018-09-06
阅读 10 分钟
4.5k
不论是面向对象,还是基于对象的语言,都会有this,我更喜欢叫他this指针,如果你不理解指针,认为它是个引用也无妨。这一片文章就是整理一下在各个情况下的this到底引用的是谁。一次来明白this的用法,下面将是一段段的代码,每段代码后面可能有简短的说明,就是这样简单粗暴。

内存管理与垃圾回收

2018-09-05
阅读 7 分钟
1.7k
首先我们需要理解,内存是什么。简单来讲,内存存储了计算机运行过程的需要的全部数据,也就是计算机正在使用的全部数据。我们需要合理的使用内存,防止内存被大量无用数据占用,同时也要防止访问和修改与当前程序无关的内存区域。内存主要包括以下几个部分: 内核数据区域,栈区,共享库映像,堆区,可读写区域,只读区...

Javascript数据类型与基本运算

2018-09-05
阅读 5 分钟
1.5k
标识符命名规则 对于变量名,键值对中的键名应满足如下要求: 开头必须是字母、下划线(_)或美元符号($) 除了开头以外的字符也可以是数字 不可以是关键字和保留字 最好不要和全局变量/函数同名,会把原有变量/函数覆盖的风险 这里,关键字就是在 js 中有特殊意义的单词,而保留字是为了以后使用预留的词语。但不要求背它...

javascript对象、类与原型链

2018-09-05
阅读 13 分钟
2.2k
是否可写指得是其值是否可修改;是否可枚举指的是其值是否可以被for...in...遍历到;是否可配置指的是其可写性,可枚举性,可配置性是否可修改,并且决定该属性可否被删除。

Javascript 严格模式特点

2018-09-05
阅读 5 分钟
2.8k
以下是严格模式中需要注意的用法,这里需要强调的是:ES6 的 class 和 模块内都是默认的严格模式。其实,js 开发也会逐步走向严格模式,这应该是个趋势。

ECMAScript6(19):Module 模块

2018-09-05
阅读 7 分钟
1.7k
JS 作为一名编程语言,一直以来没有模块的概念。严重导致大型项目开发受阻,js 文件越写越大,不方便维护。其他语言都有模块的接口,比如 Ruby 的 require,python 的 import,C++ 天生的 #include,甚至 CSS 都有 @import。在 ES6 之前,有主要的2个模块化方案:CommonJS 和 AMD。前者用于服务器,后者用于浏览器。Comm...

ECMAScript6(18):Decorator修饰器

2018-09-05
阅读 3 分钟
1.6k
修饰器是 ES7 提出的一个提案,用来修改类的行为。目前需要 babel 才可以使用。它最大的特点是:可以在编译期运行代码!其本质也就是在编译器执行的函数。其执行格式如下:

ECMAScript6(17):Class类

2018-09-05
阅读 12 分钟
1.7k
class 是 ES6 模仿面向对象语言(C++, Java)提出的定义类的方法。形式类似 C++ 和 Java (各取所长), 下面例子展示了 class 是如何定义构造函数、对象属性和对象动/静态方法的:

ECMAScript6(16):异步编程

2018-09-05
阅读 8 分钟
1.4k
程序执行分为同步和异步,如果程序每执行一步都需要等待上一步完成才能开始,此所谓同步。如果程序在执行一段代码的同时可以去执行另一段代码,等到这段代码执行完毕再吧结果交给另一段代码,此所谓异步。比如我们需要请求一个网络资源,由于网速比较慢,同步编程就意味着用户必须等待下载处理结束才能继续操作,所以用...

ECMAScript6(15):Promise 对象

2018-09-05
阅读 10 分钟
1.3k
Promise 对象用来传递异步操作消息,代表一个未来才会知道结果的事件,并且对不同事件提供统一的 API 以便进一步处理。Promise 具有以下特点:

ECMAScript6(14):iterator 迭代器

2018-09-05
阅读 6 分钟
1.3k
由于 ES6 中引入了许多数据结构, 算上原有的包括Object, Array, TypedArray, DataView, buffer, Map, WeakMap, Set, WeakSet等等, 数组需要一个东西来管理他们, 这就是遍历器(iterator)。

ECMAScript6(13):Generator 函数

2018-09-05
阅读 11 分钟
1.3k
Generator 函数是 es6 中的新的异步编程解决方案,本节仅讨论 Generator 函数本身,异步编程放在后面的部分。Generator 函数之前也提到过,描述内部封装的多个状态,类似一个状态机,当然也是很好的 iterator 生成器。Generator 函数的基本形式如下:

ECMAScript6(12):Proxy 和 Reflect

2018-09-05
阅读 7 分钟
1.5k
Proxy 用来修改某些默认操作,等同于在语言层面做出修改。所以属于一种元编程(meta programming), 即对编程语言进行编程。字面理解为Proxy代理了某些默认的操作。其使用格式如下:

ECMAScript6(11):Set 与 Map

2018-09-05
阅读 5 分钟
1.7k
Set Set 是一种集合结构,特征和数学中的一致,具有以下特征: 同一个集合中不能有相同元素 set 可以存放不同类型的数据 但使用过程中请注意以下几点: 存入 set 的数据不会进行类型转换,即'5'和 5 是不一样的 内部采用严格相等比较元素,但-0等于+0,NaN也等于NaN 定义聚合和定义其他数据结构一样,其构造函数接受一个...

ECMAScript6(10):Symbol基本类型

2018-09-05
阅读 7 分钟
1.3k
可是这样写,即便已存在同名方法,但他们实现的功能不一定一样,而且函数的接口也不一定适合自己。这样我们就不得不再给自己的函数起个其他的名字,可以万一又存在呢?

ECMAScript6(9):正则表达式的扩展

2018-09-05
阅读 2 分钟
1.3k
正则表达式扩展 构造函数支持传入正则得到拷贝,同时可以用第二参修改修饰符 {代码...} 引入新的修饰符 ES5中的修饰符有3个, 加上 ES6 的修饰符,一共5个: 修饰符 描述 描述 m multiline 多行模式 i ignore case 忽略大小写模式 g global match 全局匹配模式 u unicode unicode模式 y sticky 粘连模式 unicode 模式为了...

ECMAScript6(8):对象的扩展

2018-09-05
阅读 6 分钟
1.4k
基本扩展 允许使用已有对象赋值定义对象字面量,并且只写变量名即可 {代码...} 可以像定义存取器那样定义方法 {代码...} 注意,以下代码是等同的: {代码...} 如果一个方法是 Generator 函数,需要在前面加 *: {代码...} 属性名表达式 js 本来可以这样 obj['k'+'ey'] 访问一个对象属性,现在也可以这样定义属性了: {代...

ECMAScript6(7):二进制数组

2018-09-05
阅读 8 分钟
2.5k
这个部分如果没有C语言和计算机基础会比较难理解,如果实在理解不了可以收藏它,日后再看。 二进制数组其实很早就有了,不过为了 WebGL 中,数据可以高效和显卡交换数据。分为3类: ArrayBuffer:代表内存中的一段二进制数据; TypedArray:读写简单的二进制数据,如 Uint8Array, Int16Array, Float32Array 等9类; Data...

ECMAScript6(6):数组的扩展

2018-09-05
阅读 5 分钟
1.5k
数组的扩展 Array, from() 将类数组对象和可遍历对象转化为真正的数组。 {代码...} 和它类似的是扩展运算符, 一样可以实现该功能(要求对象具有遍历器接口): {代码...} Array.from() 接受第二参数(函数), 用来映射结果, 相当于 map, 并且可以用第三个参数绑定 this: {代码...} 技巧, 用 Array.from() 指定函数运行次数: {...

ECMAScript6(5):函数的扩展

2018-09-05
阅读 9 分钟
1.5k
以上写法, 如果传入了参数, 但这个参数对应值的布尔型是 false, 就不起作用了。当然你也可以判断 arguments.length 是否为0来避免这个问题, 但每个函数这样写就太啰嗦了, 尤其参数比较多的时候。在 ES6 中我们可以直接写在参数表中, 如果实际调用传递了参数, 就用这个传过来的参数, 否则用默认参数。像这样:

ECMAScript6(4):字符串类型扩展

2018-09-05
阅读 5 分钟
1.8k
javascript内部用 utf-16 格式存储字符, 这样仓促的引入 utf-32 的码点会引起许多错误, 所以 ES6 在 String.prototype 上添加了 CodePointAt() 方法替换 charCodeAt(), 用静态方法 String.fromCodePoint() 替换了 String.fromCharCode(), 以解决因编码差异导致的计算错误。

ECMAScript6(3):数值类型扩展

2018-09-05
阅读 2 分钟
1.3k
新加 Number.isFinite() 方法判断一个数字是否有限, Number.isNaN() 方法判断一个变量是否 NaN。值得注意的是, 如果将非数值传入这两个函数, 一律返回 false。

ECMAScript6(2):解构赋值

2018-09-05
阅读 3 分钟
1.8k
解构赋值简单来说就是 对应位置(数组)或对应键名(对象)的变量匹配过程。如果匹配失败, 对于一般变量匹配不到结果就是 undefined, 对于具有展开运算符(...)的变量结果就是空数组。

ECMAScript6(1):块级作用域

2018-09-05
阅读 3 分钟
1.4k
块级作用于对于强类型语言经验的人应该非常好理解, 一言以蔽之:ES5对变量作用于分隔使用了函数(词法作用域), 而ES6使用花括号(块作用域)。对于词法作用域在 javascript函数、作用域链与闭包 中有详细的解释。对于let 和 const声明的变量在花括号的分割下同样会形成作用于链(内部访问外部的, 但外部不能访问内部)。但是...

ECMAScript6(0):ES6简明参考手册

2018-09-04
阅读 15 分钟
1.9k
除了var,我们现在有了两种新的标示符用来存储值——let和const。与var不同的是,let和const 声明不会提前到作用域的开头。(译注:即不发生声明提前)

Chrome 调试技巧

2018-09-04
阅读 5 分钟
10.5k
写在前面本文包括浏览器调试,不包括web移动端调试。本文调试均在chrome浏览器进行 alert 这个不用多说了,不言自明 console 基本输出 想必大家都在用console.log在控制台输出点东西,其实console还有其它的方法: {代码...} 注意上面输出的error和throw出的error不一样,前者只是输出错误信息,无法捕获,不会冒泡,更...