JavaScript变量: 变量命名原则
变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的原则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的。良好的书写规范可以让你的JavaScript代码更上一个台阶,也更有利于团队的再次开发和阅读代码。
变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的原则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的。良好的书写规范可以让你的JavaScript代码更上一个台阶,也更有利于团队的再次开发和阅读代码。
这篇文章主要是探讨如何处理ES6中的变量和作用域。
昨天做一个页面有一个需求,需要把服务器取过来的数字(也有可能是数字字符串),将小数点前的数字每隔三位添加一个逗号(前面数是一个四位数的值)。比如取到的值是123456
,要将其转换成123,456
。搜索了一下,这叫数字分位符号。
这篇文章主要介绍了在JavaScript中通过push()
、concat()
和reduce()
等方法的组合,实现数组合并的功能。并且在此基础上结合《JavaScript学习笔记:数组去重》一文介绍的方法,还可以轻松的实现合并后的数组,把重复的数组项删除。
JavaScript的每个变量都会有有一个变量值,变量值都有对应的数据类型。在JavaScript中变量有两种不同的数据类型:基本类型和引用类型。在不同的地方对这两种数据类型的称呼也略有不同。比如,基本类型又称之为原始类型(拥有方法的类型或者可变类型),引用类型又称之为对象类型(不能拥有方法的类型或者不可变类型)。不管怎么称呼,都是依据数据类型的特点来命名的。
在《JavaScript变量:变量声明》一文中了解了,在JavaScript中可以通过关键词var
、let
和const
来声明一个变量。并且提到过,使用let
和const
声明的变量不存在变量提升;而使用var
声明的变量存在变量提升。那么什么是变量提升,这篇文章主要来介绍的就是这方面的知识。
理解一段代码最大的阻碍是大量的变量。而变量可以引入状态,这又将成倍的增加复杂性。每一个变量都使得理解代码更加困难。一个布尔值可以有两个状态,两个布尔值有四个。如果你的方法里有十个布尔值的话,它们可以产生1024种不同的状态。这远远超出人们的理解范畴。正确划分代码的作用域以及利用常量取代变量可以大大增加代码的可读性。从长远来看,几乎在所有情况下这都是最重要的。
在《变量值的数据类型》一文中,了解到了JavaScript的变量主要有基本类型(undefined
、null
、boolean
、number
和string
, ES6中还新增了Symbol
)和引用类型(对象、数组、函数)。但在JavaScript中用户定义的类型(object
)并没有类的声明,因此继承关系只能通过构造函数和原型链接来检查。而在这篇文章中,主要整理了在JavaScript中如何检测一个变量的类型。
TypeScript 是 JavaScript 的超集,为 JavaScript 的生态增加了类型机制,并最终将代码编译为纯粹的 JavaScript 代码。类型机制很重要吗?最近的一些项目经历让我觉得这真的很重要。当你陷在一个中大型项目中时(Web 应用日趋成为常态),没有类型约束、类型推断,总有种牵一发而动全身的危机和束缚。Immutable.js 和 Angular 2 都在使用 TypeScript 做开发,它们都是体量颇大的项目,所以我决定尝试一下 Typescript。此外我们还可以尝试 Facebook 的 Flow,比较一下两者的优劣。Typescript 对 ES6 也有良好的支持,目前组内项目使用 Babel 编译 ES6,这也就自然而然的把 TypeScirpt 和 Flow / babel-plugin-tcomb 放在了对立面,也许下一篇文章就是介绍 Flow 和 babel-plugin-tcomb。
许多时候,this
关键词对我以及许多刚起步的JavaScript程序员来说,都是一个谜。它是一种很强大的特性,但是理解它需要花不少功夫。对有Java, PHP或者其他常见的编程语言背景的人来说,this
仅仅被看成是类方法中当前对象的一个实例:不会多也不会少。多数时候,它不能在方法外被使用。正是这样一种简单的使用方法,避免了混淆。