一、语法
1、字符集
JavaScript程序用Unicode字符集编写。
由于有些计算机无法显示或输入Unicode字符全集,JavaScript定义了一种特殊序列,使用6个ASCII字符来代表任意16位Unicode内码。这些Unicode转义序列均以\u为前缀,其后跟随4个十六进制数。
2、区分大小写
ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
【注】HTML不区分大小写,XHTML区分大小写。
3、标识符
指变量、函数、属性的名字,或者函数的参数。
按下列格式规则组合一或多个字符:
- 第一个字符必须是一个字母、下划线(_)或一个美元符号($)。
- 其他字符可以是字母、下划线、美元符号或数字。
- 采用驼峰大小写格式,即第一个字母小写,剩下的每个单词的首字母大写。
4、注释
ECMAScript使用C风格的注释,包括单行注释和块级注释。
- 单行注释:以两个斜杠开头。
//单行注释
- 块级注释:以一个斜杠和一个星号(/)开头,以一个星号和一个斜杠(/)结尾。
/*
*这是一个多行
*(块级)注释
*/
5、严格模式
为JavaScript定义了一种不同的解析和执行模型。
在顶部添加如下代码:
"use strict";
6、语句
以一个分号结尾。
二、关键字和保留字
1、关键字:具有特定用途。
关键字 | 描述 |
---|---|
break | 用于跳出循环。 |
catch | 语句块,在try语句块执行出错时执行 catch 语句块。 |
continue | 跳过循环中的一个迭代。 |
do…while | 执行一个语句块,在条件语句为 true 时继续执行该语句块。 |
for | 在条件语句为true时,可以将代码块执行指定的次数。 |
for…in | 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。 |
function | 定义一个函数 |
if…else | 用于基于不同的条件来执行不同的动作。 |
return | 退出函数 |
switch | 用于基于不同的条件来执行不同的动作。 |
throw | 抛出(生成)错误 。 |
try | 实现错误处理,与 catch 一同使用。 |
var | 声明一个变量。 |
while | 当条件语句为 true 时,执行语句块。 |
2、保留字:不能用作标识符,暂时还没有任何特定的用途。
JavaScript | 最重要的 | 保留字 | (字母顺序) |
---|---|---|---|
abstract | else | instanceof | super |
boolean | enum | int | switch |
break | export | interface | synchronized |
byte | extends | let | this |
case | false | long | throw |
catch | final | native | throws |
char | finally | new | transient |
class | float | null | true |
const | for | package | try |
continue | function | private | typeof |
debugger | goto | protected | var |
default | if | public | void |
delete | implements | return | volatile |
do | import | short | while |
double | in | static | with |
三、变量
松散类型,可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。
可能包含两种不同数据类型的值:
- 基本类型值(简单的数据段):保存在变量中的实际的值。在内存中占据固定大小的空间,保存在栈内存中。
- 引用类型值(可能由多个值构成的对象):保存在内存中的对象。保存在堆内存中。
【注】
1)JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象。
2)包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针。
1、变量命名
- 必须以字母、下划线或美元符号开头,后面可以跟字母、下划线、美元符号和数字。开头不能用数字,不能用除(_ $)外的特殊符号。
- 变量名区分大小写。
- 不允许使用JavaScript关键字和保留字做变量名。
2、定义变量
var 变量名;
- 变量声明但未赋值时 ,初始值是undefined。
- 在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。
3、变量赋值:使用“=”号给变量存储内容。
4、局部变量与全局变量
用var操作符定义的变量将成为定义该变量的作用域中的局部变量,也就是说,如果在函数中使用var定义一个变量,那么这个变量在函数退出后就会被销毁。举个例子,看下面这段代码:
function test(){
var message = "hi"; //局部变量
}
test();
alert(message); //错误!
这里的变量message在函数中使用var定义,当函数调用之后,这个变量就会立即销毁。但是,省略var操作符就会创建一个全局变量,便不会发生上面的错误。具体看如下代码:
function test(){
message = "hi"; //全局变量
}
test();
alert(message); //"hi"
虽然避免了上述错误,但是此做法不推荐。因为在局部作用域中定义的全局变量很难维护。
特别注意的是,在全局作用域编写代码时可以不写var语句,但声明局部变量时必须使用var语句。建议是最好始终使用var语句声明变量。否则会出现全局变量被修改,全局命名空间被搞乱的情况。
5、变量生命周期
- 在变量声明时初始化。
- 局部变量在函数执行完毕后销毁。
- 全局变量在页面关闭后销毁。