JavaScript变量: 变量命名原则
变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的原则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的。良好的书写规范可以让你的JavaScript代码更上一个台阶,也更有利于团队的再次开发和阅读代码。
全名原则
- 变量名区分大小写,允许包含字母、数字、美元符号(
$)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号 - 变量命名长度应该尽可能的短,并抓住要点,尽量在变量名中体现出值的类型
- 尽量避免使用没有意义的命名
- 禁止使用JavaScript关键词、保留字全名
- 变量名命名方法常见的有匈牙利命名法、驼峰命名法和帕斯卡命名法
变量命名方法
变量命名的方法常见的有匈牙利命名法、驼峰命名法和帕斯卡命名法。这里简单来看看这三种命名法的使用以及它们的不同之处。
匈牙利命名法
匈牙利命名法匈牙利命名法是电脑程序设计中的一种变量命名规则,此命名法又可细分为:系统匈牙利命名法和匈牙利应用命名法。
匈牙利命名法具备语言独立的特性,并且首次在BCPL语言中被大量使用。由于BCPL只有机器字这一种数据类型,因此这种语言本身无法帮助程序员来记住变量的类型。匈牙利命名法通过明确每个变量的数据类型来解决这个问题。
在匈牙利命名法中,一个变量名由一个或多个小写字母开始,这些字母有助于记忆变量的类型和用途,紧跟着的就是程序员选择的任何名称。这个后半部分的首字母可以大写,以区别前面的类型指示字母。
匈牙利命名法:
变量名=数据类型+对象描述
- 数据类型:指点是JavaScript中六种数据类型之一,
undefined、null、boolean、number、string和Object - 对象描述:指对象名字全称或名字的一部分,而且要有明确含义,易记而且还要好理解
有ES6之后,数据的类型不再是六种了,其新增加了Symbol这个新数据类型,有关于Symbol的相关介绍,可以阅读这篇文章《深入解析ES6: Symbol》。
先来看个示例
var aPerson = []; // Array数组
var oBtn = document.getElementById('btn'); //Object对象
var fnName = function () {}; // function函数
var sName = "w3cplus"; // string字符串
如上面的示例中的变量名称aPerson、oBtn、fnName或者sName。每个变量名前都有代表数据类型的对应字母,然后后面紧跟有意义的单个单词名多个单词,并且单词的字母都大写(其实这种方法,称之为驼峰写法,后面会介绍)。
JavaScript变量名中代表数据类型都有对应的字线,如下所示:
s: 表示字符串Stringi: 表示整型Int(它是Number中的整数类型)fl: 表示浮点Float(它是Number中的小数类型)b: 表示布尔Booleana: 表示数组Arrayo: 表示对象Objectfn: 不示函数Functionre: 表示正则Regular Expression
有关于匈牙利命名更多的细节可以点击这里阅读。
驼峰命名法
当变量名和函数名称是由二个或多个单字链接在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函数的可读性。
“驼峰式大小写(Camel-Case)一词来自Perl语言中普遍使用的大小写混合格式,而Larry Wall等人所著的畅销书《Programming Perl》(O'Reilly出版)的封面图片正是一匹骆驼。”
“驼峰式大小写”命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读性。一旦选用或设置好命名规则,在程序编写时应保持一致格式。
驼峰命名法常见有两种格式:
- 小驼峰式命名法(lower camel case):第一个单字以小写字母开始;第二个单字的首字母大写,例如:
firstName、lastName。 - 大驼峰式命名法(upper camel case):每一个单字的首字母都采用大写字母,例如:
FirstName、LastName、CamelCase,也被称为Pascal命名法。
有关于驼峰式命名方法更多的介绍,可以点击这里阅读。
帕斯卡命名法
Pascal命名法(Pascal Case,巴斯卡命名法/帕斯卡命名法),电脑程序编写时的一套命名规则(惯例)。
当变量名和函数名称是由二个或二个以上单字链接在一起,而构成的唯一识别字时,用以增加变量和函数的可读性。
单字之间不以空格断开或连接号(-)、下划线(_)链接,第一个单前缀字母采用大写字母;后续单字的首字母亦用大写字母,例如:FirstName、LastName。每一个单字的首字母都采用大写字母的命名格式,被称为“Pascal命名法”,源自于Pascal语言的命名惯例,也有人称之为“大驼峰式命名法”(Upper Camel Case),为驼峰式大小写的子集。
“Pascal命名法”可视为一种命名惯例,并无绝对与强制,为的是增加识别和可读性。一旦选用或设置好命名规则,在程序编写时应保持格式的一致性。
有关于帕斯卡命名法更详细的介绍可以点击这里阅读。
虽然上面三种方法在JavaScript中命名变量常见的方法,也是很多规范推荐使用的命名方法;但除此之外还有别的方法。比如说变量名有两个或多个单词时,可以在多个单词间使用-或_连接起来。如first-name或者说first_name。
总结
文章简单介绍了一些有关于在JavaScript中变量命名的一些原则。并且介绍了变量命名的常用的几种方法,比如匈牙利命名法、驼峰命名法和帕斯卡命名法等。不管使用什么方法来命名一个变量,但文章开始提到变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号和变量名禁止使用JavaScript关键词、保留字全名这两点,不然很容易给代码带来灾难性的错误。
如需转载,烦请注明出处:http://www.w3cplus.com/javascript/variable-naming-principles.html
JavaScript变量: 变量命名原则的更多相关文章
- javascript中变量提升的理解
网上找了两个经典的例子 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); // 10 var ...
- javascript的变量作用域--对比js、php和c的for循环
为什么要写这篇文章呢?主要是给自己提个醒,js的水很深,需要小心点儿才能趟过去,更何况自己不是专业人士,那就得更加小心了. 看下面的js代码: <!DOCTYPE html> <ht ...
- [转]深入理解JavaScript的变量作用域
1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...
- JavaScript笔记:变量及其作用域
一.变量的定义及声明 在javascript中变量仅仅是用来保存值的一个占位符而已,定义变量时要使用关键字var后跟一个变量名,如下所示: var message; //定义一个变量message,像 ...
- JavaScript中变量提升是语言设计缺陷
首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确.因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升( ...
- JavaScript中变量和函数声明的提升
现象: 1.在JavaScript中变量和函数的声明会提升到最顶部执行. 2.函数的提升高于变量的提升. 3.函数内部如果用var声明了相同名称的外部变量,函数将不再向上寻找. 4.匿名函数不会提升. ...
- JavaScript 中变量、作用域和内存问题的学习
这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScrip ...
- Javascript的变量与delete操作符
原文:http://charlee.li/javascript-variables-and-delete-operator.html 刚刚看到一篇好文(原文链接), 对Javascript中的dele ...
- 深入理解JavaScript的变量作用域(转载Rain Man之作)
在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. ...
- javascript之变量、作用域、作用域链
一.变量 javascript的变量是松散类型的,所谓松散类型就是说定义的变量可以用来保存任何类型的数据.定义变量时要使用var操作符后面跟变量名.这里的var是一个关键字,如果定义变量时省略了var ...
随机推荐
- 限制ip ssh远程登录
有时候为了服务器的安全考虑,我们可以在服务器上做限制,禁止其他ip地址连接服务器. 方法一:修改ssh配置文件 其实做这个操作很简单,只需要改/etc/ssh/sshd_config配置文件,再最后一 ...
- IT求职部分网站汇总
哪合伙:http://nahehuo.com/ 过来人:http://www.guolairen.com/ 智联:www.zhaopin.com 前程:www.51job.com 中华英才:www.c ...
- angular $http服务详解
它是对原生XMLHttpRequest对象的简单封装, 这个方法会返回一个promise对象,具有sccess和error两个方法. 当然,我们也可以在响应返回时用then 方法来处理,会得到一个特殊 ...
- centos 搭建php环境
安装Apache1.安装yum -y install httpd2.开启apache服务systemctl start httpd.service3.设置apache服务开机启动systemctl e ...
- Redis缓冲区设置
对于Redis服务器的输出(也就是命令的返回值)来说,其大小通常是不可控制的.有可能一个简单的命令,能够产生体积庞大的返回数据.另外也有可能因为执行了太多命令,导致产生返回数据的速率超过了往客户端发送 ...
- Java中参数传递时值传递的机制分析
参数传递是什么? 在C的函数或是JAVA的方法中,向一个函数或方法内部传递一个参数,比如: void fun( int num ){ num+=2 ; } int a = 3 ...
- kubernetes实战(三):k8s v1.11.1 持久化EFK安装
1.镜像下载 所有节点下载镜像 docker pull kibana: docker tag kibana: docker.elastic.co/kibana/kibana: docker pull ...
- python 类 __module__ __class__
__module__ 和 __class__ __module__ 表示当前操作的对象在那个模块 __class__ 表示当前操作的对象的类是什么 创建一个目录lib 在day7 目录下创 ...
- java猫和猫的名字
这篇文章之所以叫猫和猫的名字,是因为是以猫为案例来讲的 主要的内容就是java构造函数和参数的传递 class Animal { public static String name; Animal(S ...
- http之状态码含义
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别: 1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收.理解.接受 3xx:重定向--要完成请求必须进行 ...