基础篇:7.命名规范涉及的关键字和保留字都有哪些?

书接上文,前几天写了JavaScript基础知识梳理的1-6条,如需查看请看这里,现在我们一起来讨论一下第7条,命名规范涉及的关键字和保留字都有哪些?

当然,有过一定的JavaScript基础知识的同学一定会说,关键字和保留字就那么一些,有什么好讲的,而且2个加起来还那么多,记得都费劲,也不需要记住这些,命名的时候注意一下就可以了,我想说,听着觉得蛮有道理,竟让我无言以对,

那我们就顺带讲讲别的,新酒装旧瓶!

首先我们要知道有哪些关键字,哪些保留字:

关键字26个(带*的为第5版新增关键字)如下:

break  do  instanceof   typeof  case  else   new   var   catch   finally   return   void   continue   for   switch   while   *debugger

function   this   with   default   if   throw   delete   in   try

我们可以看到关键字确实很特殊,记忆的话大致可以分为几类记忆:

条件语句类:for in ,do while , switch case , with

判断类语句 : if else , try catch , throw

结束类语句 : break , return , continue , default ,finally

检测元素类型:instanceof , typeof

申明函数对象类 : new , var , void ,  function

调试操作类:*debugger , delete

特殊关键字 : this

保留字31个(第3版)如下:

abstract   boolean   byte   char   class   const   debugger   double   enum  exprot   extends   final   float   goto   implements  

import   int   interface   long   native   package   private   protected   public   short   static   super     synchronized   throws

transient   volatile

保留字看起来就没那么有规律了,但都是一些编程语言所常用的词汇(不限于JavaScript),以为没有什么规律,本来想把每个词代表什么意思都标注出来的,但是发现部分词汇表述不太正常,不知道如何完整表述其代表的真正含义,

怕误导大家,还是算了,想了解的可以针对性的查一下。

看了这么多,那我就要问了,什么叫“关键字”,什么叫保留字呢?

所谓“关键字”,就是在JavaScript中,有一些字符用来完成一些固定的功能或表达固定的意义,它们不能用来当做变量,这样的字符就叫做关键字。关键字在JavaScript中有了固定的作用,那它肯定是不能够被用来当变量的,

比如var关键字,它在JavaScript中用来定义变量,那它就不能用来做变量名了。还有象:function,if,else,for,while这些,都是关键,那么在定义变量的时候,要回避这些关键字。

ps:绝对不能用关键字来做变量名,要不然别说代码执行了,连预解释都通过不了。(具体的反应就是代码没有执行,但浏览器也没有报错)

所谓“保留字”,是JavaScript中已经定义过的字,由于考虑扩展性,一些保留字可能并没有应用于当前的语法中,这是保留字与关键字的区别(就是说现在不是关键字,但以后有可能要成为关键字的这些词,就是保留字)。

从字面上也可以理解,保留下的词,将来有用的!比如说第3版的debugger,第5版就成了关键字了!

那有人说了,你上面说的这些关键字,保留字什么的,让我感觉这也不能用,那也不能用,我怎么样才能规避这个问题呢?

这个问题问的好,那怎么规避这个问题呢?下面就我个人的经验,说一下自己的解决方案(纯属个人解决方案,不一定是最优的方案,如有更好的方案,万望不吝赐教,谢谢!):

首先我们需要先理解一下这么一个该例,就是凡是变量,函数的命名都是:首字母必须是下划线(_),ASCII 字母(a-z,A-Z),美元符($),不能为数字,

其他可以是下划线(_),ASCII 字母(a-z,A-Z),美元符($)和数字(其他字符也是可以的,但为了变量或函数美观且有意义,尽量不要使用一些特殊的符号)。

1.所有的命名最好是一些跟需要的内容相关的词,比如说我想申明一个变量,用来表示我的学校,那么我们可以这样定义  var mySchool = "我的学校";  比如说我想申明一个数组,表示很多人的名字,那么我们可以这样定义  var names = new Array();

用英文的复数表示更多;

2.函数和变量的命名规范,比如说我们想什么一个变量,代表班级,那么显然 var class = "我的班级"; 这样申明就不对,尽管有意义,但是class是保留字,不能使用,说以为了解决我们记不清什么词是关键字,什么词是保留字的情况,我们有以下几种命名方式可以解决:

  1). 驼峰命名法(推荐使用):顾名思义,命名方式就像骆驼的背一样,高高低低,第一个单词首字母小写,后面的单词首字母大写,比如:我的学校(mySchool),我的班级(myClass),年龄(Age)因为JavaScript是区分大小写的,所以这样命名基本上是不会写到关键字和保留字的;

  2).下划线命名法(不知道官方名字叫什么,权且叫这个):顾名思义就是用下划线来区分,这个也有2种方式,第一种,下划线写在前面,如:_name,_value,,_myfried,_peopleinformation这种适合单个的单词,

但是有2个词就有点别扭,特别是较长的词(_peopleinformation),要是英文不好的同学还真不一定能懂是什么意思,所以就有了第二种,下划线写在单词中间,people_information,my_age,char_code;

  3).结合版,就是2中结合使用,那真是100%不会使用到关键字或保留字,如:_myClass,people_Information等等,至于说谁好谁坏,这个就因人而异了,没有那个说是标准命名方式,只能看个人的习惯了,只要你的命名规则可以规避关键字和保留字,

你自己创建一种全新的命名方式都可以,存在即有道理嘛!

  2015.11.05补充:还有一种命名方法我觉得也是蛮有意思的,也感觉蛮实用的,那就是匈牙利命名法,听着好高大上的赶脚,但实际的写法跟驼峰命名法有点像,只是略微的不同,不同点在于:驼峰命名法是第一个单词的首字母为小写,其他单词的首字母是大写(如:myNumArray),匈牙利命名法是前面加一个表示类型的前缀,下面我就列一个表,体会一下:

类型 前缀 示例
Array(数组类型) a aMyList
Boolean(布尔型) b bMyAnswer
Float(浮点型) f fMoney
Function(函数型) fn fnMyFunction
Int(整数型) i iAge
Object(对象型) o oGirl
Regexp(正则型) re rePattern
String(字符串型) s sName

  看到此命名法,你有何感想,我觉得我还是比较推荐此命名方式的,理由有2,一是他本来就结合了驼峰命名法,表达的意思清晰易懂,二是他定义了变量的类型,是什么变量定义什么前缀,熟悉这套命名规则后,以后一看到变量名就知道是什么类型的变量,做什么用的,恩恩,就这些!

貌似说的有点多,再说下去就是废话了,上文可能有错别字或者描述有误的地方,如有发现,希望能够帮我指正,如果有什么更好的建议和方法,希望你能分享一下,如果你觉得这篇文章还不错,希望你能推荐给别人,那就不胜感激了,谢谢阅读!

原文地址:https://www.cnblogs.com/liugang-vip/p/4929720.html