首先放出链接:
JavaScript 简介zh.javascript.info关于它的介绍可以看这篇:
GitHub Daily:这份开源的 JavaScript 教程是真的走心zhuanlan.zhihu.com整个教程现在有三大块
- 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
另外:
null
返回"object"
—— 这是语言中的一个错误,实际上它并不是一个对象。
代码质量
这一章教我们写出可读性、可维护性好的代码,”Ninja Code“ 这一章非常幽默。
代码风格:
我们的代码必须尽可能的清晰和易读。
这实际是一种编程艺术 —— 以一种正确并且人类易读的方式编码来完成一个复杂的任务。
注释
自动化测试:
自动化测试在任务中将会被进一步使用。
它实际上是一个开发者的“教育最低限度”的一部分。
对象
这一章需要关注 垃圾回收、全局Symbol、对象转原始值、new.target
认清垃圾回收的关键是了解根值的概念,以及标记清除算法
还需要特别注意对象属性的排序
关于对象转原始值
数据类型的方法
这一章介绍了 原始值类型、数组、可迭代对象、Map、Set、日期和JSON 这些类型的相关方法的使用
需注意这些
- 小数的表示是不精确的,采用IEEE754的64位格式,52位表示尾数,精确到16位有效数字
- 关于数组,shift/unshift方法性能没有push/pop好,清空数组使用arr.length=0
还有一些要留意的地方,我都截图出来了
=======
靠,知乎有bug,后面辛苦码的字,发布后就都没了,不想再写了
我丢,还是重新码一遍吧,/(ㄒoㄒ)/~~
=======
函数
这一章解释了 递归、闭包、this绑定、装饰、偏函数、柯里化 这些重要的概念
- 认清闭包的关键是环境对象,函数是天生的闭包
- new Function 创建出来的函数,它的 [[Environment]] 指向全局词法环境
另外本章中课后习题,很值得看一看
类和继承
这一章介绍了 属性描述符、getter/setter、原型链、Class、super、Mixin
列几个重点:
- __proto__是getter setter实现
- class extends会继承所有的静态方法
- instanceof 并不关心构造函数,它真正关心的是原型链。
- 继承类的构造函数必须调用super(),因为相应的构造函数会被标记为特殊的内部属性[[ConstructorKind]]:"derived"
- super是基于[[HomeObject]]实现
处理异常
最后一章主要是教我们如何通过继承的方式扩展异常类型,以及一些处理错误的技巧
总结
个人觉得这本教程最大的优点在于它是在线的,而且贴近当下。内容比较全面,语言简洁,概念解释得很清晰。作为一个从事Js开发三年多的前端萝卜,我仍然从里面读到了许多以前不知道的东西,感觉获益良多。还可以作为一本检验自身Js基础是否扎实的参照物。第一部分终于圆满读完,要开始迈入下一部分的旅程了。
======
补完丢失的部分后,感觉远不如第一遍写得好,好想吐血 _(:з」∠)_