js期末复习

JS 好难,之前会的都是皮毛,复习了好多东西。。
考完:我复习的都是皮毛。。JS 太神仙了吧

js string immutable
toFixed, toPrecision 是四舍五入
传的都是引⽤

箭头函数表达式的语法比函数表达式更简洁,并且没有自己的 this,arguments,super 或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。

image
image

字符串在声明后,其值就不会再发⽣变化( immutable)
(任何操作都不会改变字符串的值)
image
image
const 的指向不能变,但是指向的地方的值可以变
JS 传引用
image
new Array 参数只有一个的时候会被当做是数组里数的个数,而 Array.of(2)[2],仍为元素值
image
push 尾,unshift 头;pop 尾,shift 头;pop 和 shift 都会返回被删除的元素
splice(start, deleteCount, …items), 如 splice(1, 2, “cat”, “bat”, “pat”)
slice(start, end) 也可用于获取数组的一部分
数组是 object,也可添加⾃定义的 property
.toFixed.toPrecision 都是四舍五入
sort 从小到大: (v1, v2) => v1 - v2
函数的 property 可以相当于实现带记忆的函数

对⼀个 function object 使⽤ typeof 操作符
返回 “function”,⽽不是 “object”,但是 function 是 object,可以加 property
Symbol 只能作为 function 被调⽤ (也即,调⽤时前⾯不能加 new)
image
image
image
Node.js: global;browser:window
若不加 use strict,变量在赋值后会注册成一个全局变量,加了之后不会
image
image
image
image
image

image

arguments 总是忠实记录着函数调⽤时实际传⼊的参数
image
image
image

creature.say_hello.call(cat, 1, 2) 等于 creature.say_hello.apply(dog, [3, 4])
image
image

image

image

函数的 length:参数个数, 除了 有默认值的 和 rest

bind 的 args 参数有点相当于是 python 里的 partial,传给函数的前几个参数了
main function 里的 this: {}, new.target: undefined, arguments 看起来好像是 cli 的 arguments

image

image
输出分别是 233 和 undefined。因为在箭头函数生成的时候 this 还没有
函数和闭包一一对应:包含 该函数本身、以及在此时可以访问到的所有变量

Object.getOwnPropertyNames obj.hasOwnProperty 不会去 obj 的原型链上查找
in 会顺着原型链找
Object.getOwnPropertyNames 找 string 类型的 key,
Object.getOwnPropertySymbols 找 symbol 类型

Object 的 property 的三种默认属性:writable: false, 但必须 use strict 才会不可写
image
读取没有 getter 的 property 返回 undefined
在严格模式下 对⼀个没有 setter 的 property 赋值 会触发运⾏时错误
image
image
image
image
image
image
image
for .. in 枚举的是 property (下标),for .. of 枚举的是值
for .. of 不改变原来值

原型链不得有环
⼀个通过字⾯量创建的 object 在缺省情况下,其原型链的⻓度是 2
⼀个通过字⾯量创建的 function 在缺省情况下,其原型链的⻓度是 3
原型链 P358 TODO

image
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names
image
image

Object.assign(target, source);
Object.create(proto, [propertiesObject])
image
OBject.seal 管的更多
image
OBject.freeze 管的更更多
image
image
用 Object.seal()密封的对象可以改变它们现有的属性。使用 Object.freeze() 冻结的对象中现有属性是不可变的。

Array
reduce(callbackfn: (previousValue: number, currentValue: number, currentIndex: number, array: number[]) => number):
image
Array.prototype.every/some 对于每个元素调用一个 callback 返回一个 bool,通过 every/some 来综合结果
image

find:查找数组中满⾜给定条件的第⼀个元素
如果不存在满⾜给定条件的值,则返回 undefined

image
Map
image
image
image

Set

任何⼀个 iterable object 都可以构造成 Set
image

set 也可以 forEach,但是第三个参数貌似是他自己
image

image
嵌套情况
image
image

rest 是一个数组

image

【startIndex】 这样之后是解构那个数组的值
函数参数里可以直接解构
image

image
image
image
image
image
image
image
⼀元操作符 +
会将操作数转化为 number 类型的值
比如 (+c)

加法的隐式类型转换:
先 ToPrimitive,两侧有字符串的话会都转字符串,否则都转 number

类型转换这章好难。。

image
可以自定义转换的方式
乘除、减法的话是转 number
image
left 会隐式转成 bool
image
image
image
image

所有对象都是像是真的值
Two distinct objects are never equal for either strict or abstract comparisons.
An expression comparing Objects is only true if the operands reference the same Object
image

Object 的 <= 应该是 ARC 了。。太难了我弃疗了
它比 < 会多一个 If r is true or undefined,这个 true 应该就是 arc 比较出来的
https://www.ecma-international.org/ecma-262/9.0/index.html#sec-relational-operators-runtime-semantics-evaluation

image
image
image

事件对象有⼀个 target 属性
其值:事件发⽣在的 HTML 元素
事件处理函数(当不是箭头函数时)的 this 参数
表示:当前的事件监听函数所附着在的 HTML 元素
image
默认是监听冒泡阶段

在⽗元素上监听⼦元素事件

image
image

image
image
image
image
Generator 嵌套
image
用 generator 实现 DFS
image
image
generator 里 return 语句的不会在 for of 里遍历到,只有 yield 出来的会被取到
Array.from 的时候也是会忽视 return,尽管实际上这个值也会被放出来,需要手动去取
https://stackoverflow.com/a/37202835/4597306
image
image
image
image
每⼀次在 promise 对象上调⽤ then 或 catch ⽅法
都会返回⼀个新的 promise 对象
可以在这个新对象上继续调⽤ then 或 catch ⽅法
image
image
![image](https://user-images.githubusercontent.com/10709657/59854740-0f2d6c00-93a6-11e9-8e5a-7d6de74a
使用 var 关键字,你可以用相同的名称声明多个变量。然后变量将保存最新的值。

你不能使用 let 或 const 来实现这一点,因为它们是块作用域的。

所有对象的键(不包括 Symbol)在底层都是字符串,即使你自己没有将其作为字符串输入。

obj 如果你有两个名称相同的键,则键会被替换掉。它仍然位于第一个键出现的位置,但是值是最后出现那个键的值。

对象的键被自动转换为字符串
当字符串化一个对象时,它会变成 “[Object object]”
image