javascript map 排序_《现代JavaScript教程》第一部分读毕总结

8ccbe0ee2e6522faf065ab7bc9e4a2ac.png

首先放出链接:

JavaScript 简介​zh.javascript.info
ad8844bab97797523fe2975cb5b1c906.png

关于它的介绍可以看这篇:

GitHub Daily:这份开源的 JavaScript 教程是真的走心​zhuanlan.zhihu.com
2141cd624d35f6abfcf01a482d125c53.png

整个教程现在有三大块

  • JavaScript 编程语言
  • 浏览器:文档、事件和接口
  • 其他文章

我已经读完了第一部分,想在这里整理回顾下读到的内容,下面开始


第一部分,是关于Js这门语言本身的知识。按章节划分,依次涉及到 简介、基本概念、代码质量、对象、数据类型的方法、函数、类和继承、处理异常 这些主题。

简介

这一章带我们认识了Js(关于它的作用和能力上的限制),以及该用什么工具来开发调试。

关于Js,原文是这么说的

什么是 JavaScript? JavaScript 最初的目的是为了“ 赋予网页生命”。

关于能力,取决于 Js引擎:

  • V8
  • SpiderMonkey

除此我们还要了解 浏览器的同源策略

关于工具,有如下选择

  • VSCode
  • Sublime Text
  • Atom
  • WebStorm

以及要学会熟练使用 chrome 进行调试

基本概念

这一章涉及 数据类型、变量、运算符、条件、循环和函数 这些基本概念,是我们掌握一门语言首先要了解的基础。

关于内容需要关注这几个点:

  • script标签。嵌入 Js ,使之在浏览器中运行的手段
  • use strict。开启后,浏览器可以甩掉历史包袱
  • 变量命名。要养成良好的命名习惯
  • 7种基本类型。熟记,还有 typeof
  • 类型转换。ToNumber,记住 undefinednulltruefalse ;ToBoolean,记住 Falsy 值
  • 值比较。注意 nullundefinedNaN

386417a7d16240e58f9fb7fa73fbf005.png

另外:

null 返回 "object" —— 这是语言中的一个错误,实际上它并不是一个对象。

代码质量

这一章教我们写出可读性、可维护性好的代码,”Ninja Code“ 这一章非常幽默。

代码风格:

我们的代码必须尽可能的清晰和易读。
这实际是一种编程艺术 —— 以一种正确并且人类易读的方式编码来完成一个复杂的任务。

注释

79fdf4695bff1ca543c4a6dd66499290.png

自动化测试:

自动化测试在任务中将会被进一步使用。
它实际上是一个开发者的“教育最低限度”的一部分。

对象

这一章需要关注 垃圾回收、全局Symbol、对象转原始值、new.target

认清垃圾回收的关键是了解根值的概念,以及标记清除算法

还需要特别注意对象属性的排序

a853eb14620925774a7e63eeddfe0eeb.png

关于对象转原始值

9759bf39f56a345ecfba7f4a92caba44.png

数据类型的方法

这一章介绍了 原始值类型、数组、可迭代对象、Map、Set、日期和JSON 这些类型的相关方法的使用

需注意这些

  • 小数的表示是不精确的,采用IEEE754的64位格式,52位表示尾数,精确到16位有效数字
  • 关于数组,shift/unshift方法性能没有push/pop好,清空数组使用arr.length=0

还有一些要留意的地方,我都截图出来了

08833576ee386b8bf9b6f6990e03288b.png
空字符串和空白符字符串转成数值都是0

12c44f729e857f03d9d5c9395bd02938.png
Object.is和===的差异

8ed5a37413fd3446ae59c056cce1d8f9.png
chartAt与[]访问方式的差异

=======

靠,知乎有bug,后面辛苦码的字,发布后就都没了,不想再写了

我丢,还是重新码一遍吧,/(ㄒoㄒ)/~~

=======

1fea5d5d49073ad5919ba191732f0ce6.png
includes能处理NaN

4d9b38dd9a41a145fda601e19aa5d4f4.png
Set和Map的forEach方法

b0c9c84492ea973907debf3a7d48a4bd.png
WeakMap和WeakSet

函数

这一章解释了 递归、闭包、this绑定、装饰、偏函数、柯里化 这些重要的概念

  • 认清闭包的关键是环境对象,函数是天生的闭包
  • new Function 创建出来的函数,它的 [[Environment]] 指向全局词法环境

415e015c9acfed510ff5089870dfec0c.png
...可应用于可迭代对象,apply可接受类数组

d236f23938196335b1d6640512506ab9.png
apply比call+spread更好

另外本章中课后习题,很值得看一看

类和继承

这一章介绍了 属性描述符、getter/setter、原型链、Class、super、Mixin

列几个重点:

  • __proto__是getter setter实现
  • class extends会继承所有的静态方法
  • instanceof 并不关心构造函数,它真正关心的是原型链。
  • 继承类的构造函数必须调用super(),因为相应的构造函数会被标记为特殊的内部属性[[ConstructorKind]]:"derived"
  • super是基于[[HomeObject]]实现

处理异常

最后一章主要是教我们如何通过继承的方式扩展异常类型,以及一些处理错误的技巧

总结

个人觉得这本教程最大的优点在于它是在线的,而且贴近当下。内容比较全面,语言简洁,概念解释得很清晰。作为一个从事Js开发三年多的前端萝卜,我仍然从里面读到了许多以前不知道的东西,感觉获益良多。还可以作为一本检验自身Js基础是否扎实的参照物。第一部分终于圆满读完,要开始迈入下一部分的旅程了。

======

补完丢失的部分后,感觉远不如第一遍写得好,好想吐血 _(:з」∠)_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值