写点什么

着眼语言本身,咱们来聊聊 JavaScript | 极客时间

  • 2019-11-14
  • 本文字数:1457 字

    阅读完需:约 5 分钟

着眼语言本身,咱们来聊聊 JavaScript | 极客时间

JavaScript 和 HTML 、CSS 同属前端工程师必须掌握的三大技能,重要性不言而喻。这几年,随着行业的发展,JavaScript 更是变得无所不能,毫不夸张地说,现在我们看到的基本所有的主流互联网应用,它的前端都有大量的 JavaScript 代码。


但是,入行 20 多年,我发现很多人对 JavaScript 的印象都只是“简单易学”,对其掌握也仅仅停留在“会用就好”,以至于不求甚解、迷失于 JavaScript 。究其原因,他们从来都只是“写代码”,而没有去真正去了解、去探索“什么是语言”。


其实,JavaScript 作为一门语言,虽然易上手,但却有着诸多复杂微妙的机制,想要真正掌握绝非易事。而这些机制,正是语言的精髓。只有当你深入理解语言内部的实现原理,才能做到无论出现什么新技术、新框架,都能轻松应对。


这也是为什么我一直认为:每个工程师都应该构建一个语言知识结构。因为,一旦你建立了你的体系性,你对代码的洞察力绝对会随之而提升,让你可以在纷繁的代码中快速找到性能、组织、逻辑等方面的关键所在,并在语言层面给出合理的解释。这就相当于你创建了游戏规则,拥有了“编程游戏”中的上帝视角。你将会有一种切实的、万物如一的操控感


在过去的二十年中,我一直不断探索 JavaScript 语言背后的机制:一面研究它的语言精髓,一面做编程实践。在我和极客时间合作的《JavaScript 核心原理解析》专栏中,我希望把我找到的答案分享给你。我将以“语言”为核心,和你一起讨论我对 JavaScript 各种语言特性的理解。


你会发现,这个专栏和其他不同,每一讲的标题都是一行代码,并且,这些代码在表达多种语言特性的同时,都指向一个核心的内容讲述方向。


我希望通过这个专栏,你能找到自己对语言的认识,构建一个语言知识结构。因为我始终认为,“构造认识”对你是极致重要的事情,并且越早越好。


也欢迎你在专栏中跟我一起探讨 JavaScript,我会知无不言言无不尽。


我是谁?

我是周爱民,目前是南潮科技(Ruff)首席架构师。和你一样,我是个喜欢 JavaScript 的人。很多人认识我,可能都是通过我写的《JavaScript 语言精髓与编程实践》一书。


从业二十多年,我深入研究过 JavaScript、Delphi、Erlang,也专注于软件开发与架构、项目管理,曾担任盛大网络平台架构师、支付宝业务架构师和豌豆荚首席架构师。


我也特别热爱写作与分享,出过《Delphi 源代码分析》、《大道至简:软件工程实践者的思想》、《大道至易:实践者的思想》、《程序原本》以及《我的架构思想:基本模型、理论与原则》等书。

你将获得什么?

专栏分为以下 4 个模块。

1.从零开始

第一部分我会主要讲述构成 JavaScript 语言的基础——JavaScript 语言的静态结构,主要包括词法环境、块级作用域、语句、声明、字面量、变量环境、模块(名字空间)等等。

2.从表达式到执行引擎

第二部分我会主要讲述 JavaScript 的执行过程,包括执行栈、执行队列、执行上下文、函数(函数对象/闭包)作为执行结构如何参与运算等等,还将讲述表达式(运算符+操作数)与优先级这个体系,说明表达式运算与语句运算间的不同。

3.从原型到类

第三部分我会讲述 JavaScript 面向对象编程体系中最核心的一些设计,包括类继承、原型继承、属性表的使用、内部方法等等,并对索引数组和关联数组在 JavaScript 中的应用与整合做深度的分析。

4.从粗通到精通的进阶之路

最后,我会讲述 JavaScript 作为动态语言的主要特性,包括动态的类型、动态的执行过程和动态的环境上下文等等。


专栏目录👇


限时订阅福利

1.早鸟拼团价 ¥55,原价 ¥68,戳我订阅


2.分享海报,邀请好友订阅即可获得 ¥18 返现,多邀多得,上不封顶。


2019-11-14 15:122057

评论

发布
暂无评论
  • JS 词法环境和执行上下文

    JavaScript是一门解释性动态语言,但同时它也是一门充满神秘感的语言。如果要成为一名优秀的JS开发者,那么对JavaScript程序的内部执行原理要有所了解。

    2022-11-10

  • 结束语 | 做时间的朋友

    这是专栏的最后一讲,感谢你一路的支持和陪伴。

    2020-12-25

  • 结束语 | WebAssembly,未来已来

    感谢你的一路同行。

    2020-10-21

  • InterpreterPattern- 解释器模式

    解释器模式(Interpreter Pattern):是指给定一门语言,定义它的文法的一种表示(如:加减乘除表达式和正则表达式等),然后再定义一个解释器,该解释器用来解释我们的文法表示(表达式)。

    2022-06-06

  • 谷歌高级工程师:2022 年最值得学习的编程语言

    作为谷歌-新加坡的高级软件工程师,我常常会收到“什么编程语言值得学习”一类的问题。

  • 【C 语言】进阶指针 Five

    int(*Funtwo[2])(int, int) = { add, sub }; int(*Funtwo[2])(int, int) = { &add, &sub };

    2022-07-11

  • 面向对象编程,你真正懂吗?

    面向过程很好理解,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了

    2022-04-07

  • 一文辨析 Java、JSP、JavaScript

    还在傻傻分不清?Java、JSP、JavaScript ,本文带你辨析其区别与联系

    2022-07-26

  • 开篇词 | JavaScript 的进阶之路

    这门课的初衷,就是让学习JavaScript的你,能够对这个开始比较不那么“专业”的语言,有一个系统的专业理解。帮助你一步一个脚印,把点连成线,把线连成面,把面搭建起一座空间立体的“思维大厦”。

    2022-09-19

  • 在 JavaScript 如何下载文件

    在 Web 开发中,文件下载功能是一个非常常见的功能。在本文中,将介绍在 JavaScript 中如何实现下载文件。

    2023-02-11

  • 面试官:说说 Event Loop 事件循环、微任务、宏任务

    JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。为了解决这个问题,JS中出现了同步和异步。他们的本质

    2022-12-14

  • 上手 JavaScript 基准测试

    大家好,我是小鑫同学。一位从事过 Android 开发、混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感

    2022-10-13

  • 开篇词|商业思维是每个互联网人都应具备的升维能力

    商业思维是一门长期主义课程,它不仅需要我们在课堂之中用心学习,更需要保持一颗非常旺盛的好奇心去不断探索,把工作和生活中看到的现象和问题,用我们课程里讲的技巧去解构分析,通过大量的练习形成肌肉记忆。

    2022-07-18

  • 面试官:说说 Event Loop 事件循环、微任务、宏任务

    JS是一门单线程语言,单线程就意味着,所有的任务需要排队,前一个任务结束,才会执行下一个任务。这样所导致的问题是:如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的觉。为了解决这个问题,JS中出现了同步和异步。他们的本质

    2022-11-01

  • 手写 JavaScript 常见 5 种设计模式

    目前模式:工厂模式,单例模式,适配器模式,装饰者模式,建造者模式

    2022-11-14

  • 加餐 5|周爱民:我想和你分享些学习的道理

    昔闻人言:天下之事,最轻易者莫过于求学,最恒难者,莫过于问道。那你对于有人觉得学习难这件事,怎么看?

    2020-10-07

  • 5 个 JavaScript 写法小技巧分享

    JavaScript 易上手,但是难以全面掌握;它有许多“怪癖”,只有在长时间的使用它,才能逐渐揭开它神秘的面纱~

    2022-08-31

  • 深度理解 NodeJS 事件循环

    ALL THE TIME,我们写的的大部分javascript代码都是在浏览器环境下编译运行的,因此可能我们对浏览器的事件循环机制了解比Node.JS的事件循环更深入一些,但是最近写开始深入NodeJS学习的时候,发现NodeJS的事件循环机制和浏览器端有很大的区别,特此记录来深

    2022-11-18

  • 开篇词 | 如何借助 Vue 3 建构你的前端知识体系?

    从自身经历出发为你解答如何学习Vue 3。

    2021-10-18

发现更多内容

LeetCode题解:226. 翻转二叉树,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

Python 为什么不支持 switch 语句?

Python猫

Python 编程

Malagu 框架介绍

木香丘

云计算 开源 Serverless 架构 框架

Redis-技术专题-基础介绍

洛神灬殇

基于 Spring Boot 的企业级快速开发框架 BDF3

木香丘

架构 Spring Boot 可视化 后台管理系统

架构师1期-代码重构作业

ltl3884

极客大学架构师训练营

架构师训练营第三周课后作业

Gosling

极客大学架构师训练营

实用威胁建模指南(一)

亚伦碎语

敏捷 安全设计 系统安全 #威胁建模

架构师训练营第三周学习总结

Gosling

极客大学架构师训练营

极客时间架构 1 期:第 3 周代码重构 - 命题作业

Null

架构师训练营第三小结(9.28-10.4)

zjzj2017

第四周作业

极客大学架构师训练营

架构师训练营第 1 期第 4 周学习总结

好吃不贵

极客时间架构 1 期:第 3 周代码重构 - 学习总结

Null

Serverless 多云解决方案 Malagu

木香丘

云计算 Serverless 架构 云原生 Malagu

Hazelcast IMDG 带你瞬间进入内存计算的时代

张磊

分布式计算 内存管理 分布式缓存 分布式内存网格

spring-boot-route(九)整合JPA操作数据库

Java旅途

Java Spring Boot jpa

如何高质量学习与正确运用设计模式

木香丘

学习 设计模式 实战

深入剖析go中字符串的编码问题——特殊字符的string怎么转byte?

Gopher指北

后端 string utf-8 Go 语言

架构师训练营第四周作业

尹斌

有这些要素,架构才完整

北风

架构 架构师之道 架构方法

爆赞!这份《Java核心宝典》绝对是面试复习的最佳选择

Java架构之路

Java 程序员 面试 编程语言

缓存服务-技术专题-解决方案

洛神灬殇

架构师训练营第四周学习总结

尹斌

架构师训练营第 1 期第 4 周作业

好吃不贵

极客大学架构师训练营

3. CocoaPods 命令解析 - CLAide

Edmond

ruby ios objective-c CocoaPods PackageManager

架构师训练营第三周作业(9.28-10.4)

zjzj2017

发几张国庆的照片

亨利笔记

容器 k8s Harbor 镜像

入行架构师之前,这7项技能你要先了解一下

Java架构师迁哥

Redis-技术专题- 热点Key如何解决

洛神灬殇

单例模式

魏小龙

着眼语言本身,咱们来聊聊 JavaScript | 极客时间_大前端_周爱民_InfoQ精选文章