【转载】深入浅出ES6:let和const
回溯到1995年,当Brendan Eich在设计第一版JavaScript时,他搞错了许多东西,当然这也包括曾属于语言本身的一部分,例如Date
对象,对象相乘被自动转换为NaN
等。然而现在回过头看,语言最重要的部分都是设计合理的:对象、原型、具有词法作用域的一等函数、默认情况下的可变性等。语言的骨架非常优秀,甚至超越了人们对它的初步印象。
回溯到1995年,当Brendan Eich在设计第一版JavaScript时,他搞错了许多东西,当然这也包括曾属于语言本身的一部分,例如Date
对象,对象相乘被自动转换为NaN
等。然而现在回过头看,语言最重要的部分都是设计合理的:对象、原型、具有词法作用域的一等函数、默认情况下的可变性等。语言的骨架非常优秀,甚至超越了人们对它的初步印象。
这几天都在折腾JavaScript中有关于变量的基础知识,不折腾不知道,一折腾才知道还有很多未能明白。我把变量相关的知识分为:变量的声明、变量命名原则、变量值的数据类型、变量作用域和变量提升几个部分。为了能更好的理清楚相关的知识点,绘制了一张思维导图。在这篇文章主要来理清楚变量声明相关的知识点。
变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的原则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的。良好的书写规范可以让你的JavaScript代码更上一个台阶,也更有利于团队的再次开发和阅读代码。
这篇文章主要是探讨如何处理ES6中的变量和作用域。
JavaScript的每个变量都会有有一个变量值,变量值都有对应的数据类型。在JavaScript中变量有两种不同的数据类型:基本类型和引用类型。在不同的地方对这两种数据类型的称呼也略有不同。比如,基本类型又称之为原始类型(拥有方法的类型或者可变类型),引用类型又称之为对象类型(不能拥有方法的类型或者不可变类型)。不管怎么称呼,都是依据数据类型的特点来命名的。
在《JavaScript变量:变量声明》一文中了解了,在JavaScript中可以通过关键词var
、let
和const
来声明一个变量。并且提到过,使用let
和const
声明的变量不存在变量提升;而使用var
声明的变量存在变量提升。那么什么是变量提升,这篇文章主要来介绍的就是这方面的知识。
理解一段代码最大的阻碍是大量的变量。而变量可以引入状态,这又将成倍的增加复杂性。每一个变量都使得理解代码更加困难。一个布尔值可以有两个状态,两个布尔值有四个。如果你的方法里有十个布尔值的话,它们可以产生1024种不同的状态。这远远超出人们的理解范畴。正确划分代码的作用域以及利用常量取代变量可以大大增加代码的可读性。从长远来看,几乎在所有情况下这都是最重要的。
在《变量值的数据类型》一文中,了解到了JavaScript的变量主要有基本类型(undefined
、null
、boolean
、number
和string
, ES6中还新增了Symbol
)和引用类型(对象、数组、函数)。但在JavaScript中用户定义的类型(object
)并没有类的声明,因此继承关系只能通过构造函数和原型链接来检查。而在这篇文章中,主要整理了在JavaScript中如何检测一个变量的类型。
很多(JavaScript)开发者都在讨论"作用域",但它是什么?它们在JavaScript中的任何地方!我发现很多年轻的开发者不知道作用域是什么。他们中大多数人可以用jQuery做一些很酷的东西。但只是停留在从网上复制一些代码片段,修改一下他们懂的地方并且粘贴到一个JavaScript文件中的程度。了解什么是作用域和你能用它做什么是很重要的,我希望能帮你更好地理解它。我讲的大多数内容都来自我为一些年轻开发者们做了很多次的演讲。(JavaScript基础教程)
今天,CSS处理器已是Web开发流程中的一个标准。预处理器的主要优点之一就是它们能够使用变量。这可以帮助你避免复制粘贴代码,也简化了开发和重构。我们使用预处理器可以存储颜色、字体和布局等细节——一切我们想使用的CSS都可以。