初次听到全栈工程师这个称谓的时候,我就被这个「霸气」的名字所吸引,全栈在我心里一直是技术厉害的大触的专属标签。虽然经常听到这个词,但是对这个词本身的理解却不甚清晰,甚至一度把全栈工程师简单地以为是全“端”工程师,以为同时会前端和后端就是全栈了,后来才知道,这种认识是多么粗浅。
以前,变量声明方式是JavaScript编程中一个令人困惑的部分。在大部分类C语言里,变量(或者说作用域)在声明的地方生成。但是在JavaScript中,情况就不是这样了。变量实际上创建的地方取决于你声明它的方式,而ECMAScript 6提供了一些可选的方式来让你更容易地控制作用域。本章将会告诉你为什么经典的`var`声明会令人感到困惑,并且会介绍ECMAScript 6中的块级作用域,然后会给出如何使用它们的最佳实践。
学习JavaScript的时候,this曾让我困惑不已,因为不清楚this所指向的是什么,在阅读一些代码的时候总是迷迷糊糊,不知所云。弄懂this后,看JavaScript代码的时候比原来更清晰,对语言本身也有了更深的理解。在JavaScript中,this非常重要但又特别容易弄错,所以我在此总结一下this的点点滴滴,希望能给那些对this还不明白的朋友们一点帮助吧。
JavaScript的核心语言特性是在一个叫做ECMA-262的标准中定义的。在这个标准中定义的语言叫做ECMAScript。你所知道的在浏览器中和Node.js中的JavaScript其实是ECMAScript的父集。浏览器和Node.js通过增加对象和方法来增加更多的功能,不过语言的核心还是在ECMAScript中定义的。ECMA-262标准的不断发展对作为整体的JavaScript的成功至关重要,而这本书包含了这个语言近来最重要的更新——ECMAScript6的诸多改变。
对于一门编程语言来说,作用域主要有两种模型,即词法作用域(Lexical Scope)和动态作用域(Dynamic Scope)。而词法作用域,即静态作用域(Static Scope),被目前JavaScript在内的大部分编程语言所采用,而动态作用域只有Bash脚本等少数编程语言在使用。
JavaScript中在预编译后执行代码时对变量的查询分为LHS(Left-Hand-Side)查询和RHS(Right-Hand-Side)查询。