Web/04-JavaScript基础/04-标识符、关键字、保留字.md
2021-11-17 11:47:05 +08:00

106 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 04-标识符、关键字、保留字
---
<ArticleTopAd></ArticleTopAd>
## 变量的命名规则(重要)
JS是大小敏感的语言。也就是说 A 和 a 是两个变量。大写字母是可以使用的,比如:
```javascript
var A = 250; //变量1
var a = 888; //变量2
```
我们来整理一下**变量的命名规则**,非常重要。
必须遵守:
- 只能由字母(A-Z、a-z)、数字(0-9)、下划线(\_)、美元符( $ )组成。
- 不能以数字开头。必须以字母(A-Z、a-z)、下划线(\_)或者美元符( $ )开头。变量名中不允许出现空格。尤其注意,变量名中不能出现**中划线**`-`,很多人写了多年代码都不知道这一点,让人大跌眼镜。
- 严格区分大小写JS 是区分大小写的语言)。
- 不能使用 JS 语言中保留的「关键字」和「保留字」作为变量名。下一篇文章会讲。
- 变量名长度不能超过 255 个字符。
-
- 汉语可以作为变量名。但是不建议使用,因为 low。
建议遵守:
- 命名要有可读性,方便顾名思义。
- 建议用驼峰命名法。比如 getElementById、getUserInfo、aaaOrBbbAndCcc
**补充**
1、不能以数字开头是为了把数字和字母区分开。
2、JS底层保存标识符的时候是采用的 Unicode 编码。所以理论上讲在遵守命名规则的前提下utf-8中包含的所有内容都可以作为标识符。
## 标识符
**标识符**:在 JS 中所有的可以由我们**自主命名**的都可以称之为标识符。包括:**变量名、函数名、属性名、参数名**都是属于标识符。
通俗来讲,标识符就是我们写代码时为某些东西起的名字。类似于人出生的时候,起个人名。
**标识符的命名规则**和变量的命令规则是一样的。关于变量的命名规则,详见上一段。
标识符不能使用语言中保留的**关键字**及**保留字**。
## 关键字
**关键字**被JS赋予了特殊含义的单词。也就是说关键字是 JS 本身已经使用了的单词,我们不能再用它们充当变量名、函数名等标识符。关键字在开发工具中会显示特殊的颜色。
JS 中的关键字如下:
```bash
if、else、switch、break、case、default、for、in、do、while、
var、let、const、void、function、continue、return、
try、catch、finally、throw、debugger、
this、typeof、instanceof、delete、with、
export、new、class、extends、super、with、yield、import、static、
true、false、null、undefined、NaN
```
## 保留字
**保留字**:实际上就是预留的“关键字”。它们虽然现在还不是关键字,但是未来可能会成为关键字。同样不能用它们当充当变量名、函数名等标识符。
JS 中的保留字如下:
```bash
enum、await
abstract、boolean、byte、char、double、final、float、goto、int、long、native、short、synchronized、transient、volatile、
arguments eval Infinity
# 以下关键字只在严格模式中被当成保留字在ES6中是属于关键字
implements、interface、package、private、protected、public
```
当你在网上搜“JS保留字”的时候你会找到很多版本每个版本都不一样各有各的说法。**如果有不一样的地方,请以我写的为准**。
其实,以谁的版本作为标准并不重要,因为有些单词到底是**关键字**还是**保留字**并没有严格的界限。JS 关于保留字的规则非常复杂,上放列表中的一些单词在特殊情况下其实是可以使用的。
我们只需要记住一点:上面提到的所有**关键字**和**保留字**,我们都不要用它们作为变量名或者参数名。不要尝试这些奇怪的做法。
如果你还想了解更多,可以看这几个参考链接:
- [知乎问答undefined是保留字吗](https://www.zhihu.com/question/472379938)
- 书籍《[JavaScript 悟道](https://book.douban.com/subject/35469273/)》的第一章:保留字部分。
## 我的公众号
想学习**更多技能**?不妨关注我的微信公众号:**千古壹号**。
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
![](https://img.smyhvae.com/20200102.png)