今天我们要主要学习三个看似很简单的内容,分别是:
-
区分大小写
-
如何加注释
-
什么是变量
下面我们来单独说一说这三个问题。
区分大小写
众所周知,在 HTML 中我们是不用区分大小写的,虽然 W3C 要求各个浏览器规范大小写,但在实际中,浏览器兼容了 HTML 中的大小写问题。但是在 JS 当中,是必须区分大小写的。在实际的开发中,这点一般不会出什么问题,因为我们一般是把 JS 文件和 HTML 文件分离开的。但在某些情况下,我们需要把 JS 文件写在 HTML 中,这个时候应不应该区分大小写,或者说应该怎样区分大小写?
当我们在 HTML 中插入 JS 代码的时候,我们一般是设置一个点击事件——onclick,这个时候 onclick 是不需要区分大小写的,但是 onclick 的值是要区分大小写的。(我们可以这么想:onclick 的值实际上就是 JS 代码,而 JS 代码无论何时都是要区分大小写的。)
什么是变量
在说到变量之前,我们要提到一个更大的概念——标识符。
什么是标识符?用书中的话来说:标识符就是指变量、函数、属性的名字,或者函数的参数。
其实书中已经说的很明白了,按我自己的理解就是代码中一切可使用的东西的名称。标识符按照下列格式规则来命名:
-
第一个字符必须是一个字母,下划线(_)或一个美元符号($);
-
其他字符可以是字母,下划线,美元符号或者数字。
从概念上我们可能会很清楚其命名规则,但是在第一条规则中会有这么一个问题:汉字算字母么?
答案是算的。在 JS 历史那一节中我们说过,在规范 JS 时其中有一个要求是 JS 全面支持 Unicode 的编码。那么包括汉字在内的所有语言字符都算是字母。只不多我们在平时的开发中我们不推荐使用汉字。
注释
一般在编程语言中都有两种注释:单行注释和块级注释,在 JS 当中也是如此。单行注释以两个反斜杠开头:
// 单行注释
块级注释以一个反斜杠和一个星号开头(/)开头,以一个星号和一个斜杠结尾(/):
/ *
* 这是一个块级注释
*
* /
严格模式
在 JS 中你可以以两种模式来运行代码:普通模式和严格模式。这两种模式的差别还是很大的,我们今天不具体的说这两种模式细节上的差别,我们先来说一说在使用上应该注意些什么。
书中说到,如果要对整个脚本使用严格模式,那么你可以在顶部添加如下代码:
"use scrict";
如果要对某个函数使用严格模式,可以在函数内部上方编辑这条编译指令:
function doSomething (){
"use scrict";
//函数体
}
语句
JS 当中的语句是以一个分号结尾,如果我们省略分号,解释器将会自行确定语句的结尾。
那么 JS 解释器是按照什么样的规则来自行确定分号的呢?
如果当前行代码能与下一行代码合并一起执行,那就放在一起;如果不能一起执行,就在中间加一个分号再执行,如果还不能执行,就报错。
这种情况有两种例外:
1.在遇到 return
break
continue
作为单独行时,将直接中断执行,不会判断当前行能否与下一行合并。所以当你在 return 一个东西的时候,我们一定要把返回的值写在 return 后面。
2.在涉及到 ++
--
的代码时。有如下实例:
a=1
b=2
a
++
b //a = ? b = ?
解析这段代码的关键之处在于 ++
是和 a
合并成 a++
,还是和 b
合并成一个 ++b
。
按照我们刚才说到的 JS 解释器的添加分号原则,那 ++
应该与上一行合并,但是实际未然,在实际中, ++
是和下面的 b
合并:
a=1
b=2
a
++
b //a = 1 b = 3
对于括号,我们要记住的只有一点:能加尽量加!
关键字和保留字
可能很多初学者对关键字和保留字这两个概念的定义很模糊,知道关键字和保留字有什么,但不知道为什么会有这么个东西?
其实这一点很好理解:我们前面提到了标识符,也就是变量、参数、函数等的名字。原则上满足标识符规则的名称都应该是合法的,但是代码中毕竟有一些英文单词,例如 return
break
alert
等具有特殊的含义的单词,那么这些具有特殊含义的单词就不能作为标识符了—— 一个单词总不能有两种含义吧。基于这样的考虑,我们把 JS 代码中有特殊含义的单词总结出来,取名为关键字,意思是指这些单词在 代码中意义非凡,不便于作为标识符。
理解了关键字之后那么保留字就容易理解了:
因为一些单词官方考虑到在以后的更新中可能会变成关键字,所以也把这些单词总结出来作为保留字。
关键字,保留字那么多,我应该如何在实际开发中避免呢?
-
简单粗暴:记住。
-
采用驼峰式的命名方式。
-
使用拼音。
-
JAVA 中所有关键字都是 JS 当中的保留字。
关于变量
JS 当中的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。如:
var massage = "hi";
书中说到:
像这样初始化变量并不会把他标记为字符串类型;初始化的过程就是给变量赋一个值那么简单。
意思就是说 massage 的数据类型是不确定的,他只是跟着后面的值变化而变化。
关于局部变量和全局变量
说到局部变量和全局变量,就不得不提作用域了,我们将在下次的推送中了解 JS 的编译原理和作用域,在这里我们就不做详述了。
我们只需记住一句话:用 var
定义的就是变量就是局部变量(其实用var定义的变量写在全局作用域内也是全局变量),不用 var
定义的变量就会自动生成全局变量。
在用 var
定义多个变量的时候,最好把逗号写在前面
var message = "hi",
found = false,
age = 29;
这样写其实并不容易检查,写成下面的方式更好一些:
var message = "hi"
,found = false
,age = 29;