LearningRecord
LearningRecord copied to clipboard
学习资料汇总、阅读记录,持续学习,每天进步一点点.🏫🏫
迭代(Iteration )是什么,它分为两个部分 Iterable:可迭代性是一种数据结构,它希望使其元素可以访问公共部分。它通过内置系统的一个方法,键为 Symbol.iterator。这个方法就是迭代器的工厂。 Iterator:用于遍历数据结构的元素的指针 内置可迭代对象 1)数组Arrays ``` console.log([][Symbol.iterator]) for(let x of ['a','b']) console.log(x) ``` 2)字符串Strings ``` console.log(""[Symbol.iterator]) for(let x of "abc") console.log(x) ``` 3)Map ``` let map = new...
```javascript const a = { key1: Sysmnol(), key2: 0 } // 这个过程中发生了什么 console.log(Json.stringify(a)) ``` 返回{"key2":0}  所以stringify并不能将所有的数据类型在不丢失信息的情况下转换成字符串,上面的Map就在转换的过程中变成了一对{},解决方法就是用stringify可处理的数据结构替换Map
一个TypedArray 对象描述一个底层的二进制数据缓存区的一个类似数组(array-like)视图 JavaScript的TypedArray分为两个部分:缓冲区和视图 - 缓 冲区由ArrayBuffer实现,一个缓冲区是一个代表某个数据块的对象。它没有格式,而且没有提供一个机制来访问或操纵其中的内容。为了存取缓冲区中 的内容,你需要创建一个视图。视图提供了一个环境(context),包括数据类型、起始偏移量以及元素数量。它把数据转化为实际上的类型化数组。 - 视图由 ArrayBufferView和它的一些子类实现 ArrayBufferView的子类: 下面的子类提供了特定的缓冲区视图,用来处理不同类型的数据。要注意的是,如果要处理的数据类型超过一字节,将使用平台对应的端序。如果需要操作端序,可以使用DataView来代替ArrayBufferView。 Int8Array 、Uint8Array、Int16Array、Uint16Array、Int32Array、Uint32Array、Float32Array、Float64Array ArrayBufferView的父类: - DataView:DataView提供了一个底层接口来从ArrayBuffer中存取数据 - StringView:StringView提供了一个构建于ArrayBuffer之上的C语言风格的字符串操作接口(比如说字符编码的数组,类似JavaScript中的ArrayBufferView) 操作更复杂的数据结构 ```javascript var buffer = new ArrayBuffer(24); var idView = new...
* Set 成员唯一、无序且不重复 [value, value],键值与键名是一致的(或者说只有键值,没有键名) 可以遍历,方法有:add、delete、has * WeakSet 成员都是对象 成员都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏 不能遍历,方法有add、delete、has * Map 本质上是键值对的集合,类似集合 可以遍历,方法很多可以跟各种数据格式转换 * WeakMap 只接受对象最为键名(null除外),不接受其他类型的值作为键名 键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的 不能遍历,方法有get、set、has、delete * 扩展:Object与Set、Map 1.Object 与 Set ```javascript const properties1 = {...
一:var声明的变量会挂载在window上,而let和const声明的变量不会 二: var声明变量存在变量提升,let和const不存在变量提升 三:let和const声明形成块作用域 四: 同一作用域下let和const不能声明同名变量,而var可以 五:let有暂时性死区 ```javascript var a = 100; if(1){ a = 10; //在当前块作用域中存在a使用let/const声明的情况下,给a赋值10时,只会在当前作用域找变量a, // 而这时,还未到声明时候,所以控制台Error:a is not defined let a = 1; } ```` 六: const...
匿名函数:就是没有函数名的函数。 自执行匿名函数 - 匿名函数的基本形式为(function(){...})(); - 前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之 - 匿名函数的作用是用于闭包和避免全局变量的污染以及函数名的冲突 举例: ```javascript (function(){ alert(1); } ) ( ) ( function(){ alert(2); } ( ) ) void function(){ alert(3); }() ``` 用途: 匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用...
首先让我们回顾一下,map函数的第一个参数callback: var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg]) 这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引。 而parseInt则是用来解析字符串的,使字符串成为指定基数的整数。 parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。 了解这两个函数后,我们可以模拟一下运行情况 parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1 parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN parseInt('3', 2)...
三元表达式: ```javascript test ? num1 : num2 ```
比如 2018 的 BigInt,partial function,pipeline operator
Currying(柯里化),point-free 函数,partial function 应用,高阶函数,纯函数,独立副作用,record 类型(联合,代数数据类型)等