JavaScript学习笔记
JavaScript语言基础
变量
变量指程序中一个已经命名的存储单元,主要作用是为数据操作提供存放信息的容器。在JavaScript中可以使用var声明变量,其语法格式如下:
1 | var variable; |
在声明变量的同时也可以为变量赋值,如下面的代码定义一个变量number并赋初始值10:
1 | var number=10; |
由于JavaScript采用弱类型的形式,所以在声明变量时不需要指定变量的类型。变量的类型根据其赋值来确定,如:
1 | var state=true; |
JavaScript变量的命名规则如下。
(1)变量名由字母、数字或下画线组成,但必须以字母或下画线开头。
(2)变量名中不能有空格、加号、减号或逗号等符号。
(3)变量名严格区分大小写,如arr_week与arr_Week代表两个不同变量。
(4)不能使用JavaScript中的关键字,这些关键字如表1所示。
数据类型
(1)数值型
JavaScript的数值型数据又可以分为整型和浮点型。JavaScript的整型数据可以是正整数、负整数和0,并且可以采用十进制、八进制或十六进制来表示。在JavaScript中以“0”开头的数为八进制数,以“0x”开头的数为十六进制数。浮点型数据由整数部分加小数部分组成,只能采用十进制,但是可以使用科学记数法或标准方法表示。
(2)字符型
字符型数据是使用单引号或双引号括起的一个或多个字符。
在JavaScript中单引号定界的字符串中可以含有双引号,双引号定界的字符串中可以含有单引号。但是双引号定界的字符串中不能包含有双引号,单引号定界的字符串中也不能包含有单引号。
(3)布尔型JavaScript的布尔型数据也只有true和false两个值。用来说明或代表一种状态或标志。在JavaScript中也可以使用整数0表示false,使用非0的整数表示true。
(4)转义字符以反斜杠开头的不可显示的特殊字符通常为“控制字符”,也称为“转义字符”。通过转义字符可以在字符串中添加不可显示的特殊字符,或者防止引号匹配混乱的问题。JavaScript常用的转义字符如表2所示。
(5)空值JavaScript中有一个空值(null),用于定义空的或不存在的引用。如果试图引用一个没有定义的变量,则返回一个null值。
空值不等于空的字符串(””)或0。
(6)未定义值当使用了一个未声明的变量或者一个已经声明但未赋值的变量时,将返回未定义值(undefined)。
JavaScript中还有一种特殊类型的数字常量NaN,即“非数字”。当在程序中由于某种原因发生计算错误后,将产生一个没有意义的数字,此时JavaScript返回的数字值即NaN。
应用运算符
(1)算术运算符JavaScript中的算术运算符执行数学运算,即在程序中执行加、减、乘、除等运算,常用的算术运算符如表3所示。
执行除法运算时,0不能作为除数;否则返回结果为Infinity。(2)赋值运算符JavaScript中的赋值运算符可以分为简单赋值运算和复合赋值运算,前者将赋值运算符(=)右边的表达式的值保存到赋值运算符左边的变量中;后者混合了其他操作(算术运算操作及位操作等)和赋值操作。
JavaScript的常用赋值运算符如表4所示。
(3)比较运算符比较运算符的基本操作过程是首先比较操作数,操作数可以是数字和字符串,然后返回一个布尔值true或false。JavaScript支持的常用比较运算符与Java中的常用比较运算符相同。
(4)逻辑运算符逻辑运算符返回一个布尔值,通常和比较运算符一起使用,用来表示比较运算,常用于if、while和do…while语句中。JavaScript中常用的逻辑运算符如表5所示。
(5)条件运算符条件运算符是JavaScript支持的一种特殊的三目运算符,其语法格式如下:
擦作数?结果1:结果2
如果“操作数”的值为true,则整个表达式的结果为“结果1”;否则为“结果2”。
(6)位运算符位运算符用于操作数值的位,在运算前先将操作数转换为32位的二进制数。然后执行相关运算,最后输出结果以十进制表示。JavaScript中常用位操作运算符如表6所示。
流程控制语句
1.if条件判断语句
判断变量或表达式并根据判断结果执行相应处理可以使用if语句,其语法格式如下:
1 | if(expression){ |
(1)expression:任意逻辑表达式,用于指定判断条件,通常由比较运算符和逻辑运算符组成。
(2)statement 1:用于指定要执行的语句序列,当expression的值为true时,执行该语句序列。
(3)statement 2:用于指定要执行的语句序列,当expression的值为false时,执行该语句序列。
执行上述if语句时首先计算expression的值,如果为true,则执行statement1,执行后结束该if语句;否则执行statement2,执行后结束该if语句。
2.switch语句
switch是典型的多路分支语句,允许在找不到一个匹配条件的情况下执行默认的一组语句,其语法格式如下:
1 | switch(expression){ |
(1)expression:任意表达式或变量。
(2)judgement:任意常数表达式。当expression的值与某个judgement的值相等时,执行此case后的statement语句;否则执行default后面的defaultstatement语句。
(3)break:用于结束switch语句,从而使JavaScript只执行匹配的分支。如果没有该语句,则执行switch语句的所有分支,switch语句也失去了使用的意义。
3.for循环语句
for循环语句也称为“计次循环语句”,一般用于循环次数已知的情况,在JavaScript中应用比较广泛。其语法格式如下:
1 | for(initialize;test;increment){ |
(1)initialize:一条初始化语句,用来为循环变量初始化赋值。
(2)test:循环条件,一个包含比较运算符的表达式,用来限定循环变量的边限。如果循环变量超过该边限,则停止该循环语句的执行。
(3)increment:用来指定循环变量的步幅。
(4)statement:用来指定循环体,在循环条件的结果为true时,重复执行。for循环语句执行的过程是先执行初始化语句,然后判断循环条件。如果循环条件的结果为true,则执行一次循环体;否则直接退出循环。最后执行迭代语句,改变循环变量的值,至此完成一次循环。接下来将进行下一次循环,直到循环条件的结果为false结束循环。
4.while循环语句
while循环语句是另一种基本的循环语句,其结构和for循环语句有些类似,但是不包含循环变量的初始化及循环变量的步幅。其语法格式如下:
1 | while(expression){ |
(1)expression:一个包含比较运算符的条件表达式,用来指定循环条件。
(2)statement:用来指定循环体,在循环条件的结果为true时,重复执行。
(3)while循环语句执行的过程是先判断条件表达式的值,如果为true,则执行循环体并且在循环体执行后进入下一次循环;否则退出循环。
5.do…while循环语句
do…while循环语句和while循环语句相似,不同是在循环底部检测循环表达式,这样保证了循环体至少被执行一次。其语法格式如下:
1 | do{ |
(1)statement:用来指定循环体,循环开始时首先执行一次,然后在循环条件的结果为true时重复执行。
(2)expression:一个包含比较运算符的条件表达式,用来指定循环条件。
do…while循环语句执行的过程是先执行一次循环体,然后判断条件表达式的值。如果为true,则继续执行;否则退出循环。
函数
函数由关键字function、函数名加一组参数,以及置于大括号中需要执行的一段代码定义,基本语法格式如下:
1 | function functionName([parameter 1,parameter 2,...]){ |
(1)functionName:必选,用于指定函数名。在同一个程序中函数名必须是惟一的,并且区分大小写。
(2)parameter:可选,用于指定参数列表。当使用多个参数时参数间使用逗号分隔,一个函数最多可以有255个参数。
(3)statements:必选,函数体,用于实现函数功能的语句。
(4)expression:可选,用于返回函数值,为任意的表达式、变量或常量。
事件
在处理事件时主要通过为事件指定相应的处理程序来完成相应的操作。在Web应用中,可以通过以下3种方法指定事件处理程序。
(1)在HTML中直接指定事件处理程序在HTML中分配事件处理程序只需要在HTML标记中添加相应的事件,并为该事件指定要执行的代码或是函数名即可。例如,要在单击“注册”按钮后弹出一个提示对话框,提示单击了“注册”按钮,可以使用下面的代码:
1 | <input name="bt_resister" type="button" value="注册" onclick="clickFunction();"> |
(2)在JavaScript中直接指定事件处理程序在JavaScript中调用事件处理程序,首先需要获得要处理对象的引用,然后将要执行的处理函数赋值给对应的事件。例如,下面的代码:
1 | <input name="bt_register" type="button" value="注册"> <!-- "注册"按钮 --> |
(3)在JavaScript中通过匿名函数指定事件处理程序在JavaScript中通过匿名函数指定事件处理程序与在JavaScript中直接调用事件处理程序一样,也需要先获得要处理对象的引用,然后通过匿名函数的形式将要执行的代码赋值给对应的事件。例如,下面的代码:
1 | <input name="bt_register" type="button" value="注册"> <!-- "注册"按钮 --> |
窗口
通过window对象的defaultStatus和status属性可以控制窗口的状态栏。
(1)defaultStatus属性:一个可读写的字符串,用于指定状态栏中的默认文本,这些文本可以在鼠标移动到一个超链接或浏览器的控制按钮上时暂时被URL、上下文帮助信息或其他瞬时文本代替。当鼠标离开这些区域后,又会恢复为默认的文本。defaultStatus属性的语法格式如下:
1 | window.defaultStatus; |
(2)status属性:一个可读写的字符,用于指定状态栏中的当前信息。该状态栏信息的时间是有限的,被其他信息覆盖后将不再显示。该属性的语法格式如下:
1 | window.status; |
打开新的浏览器窗口
使用window对象的open()方法可以打开一个新的浏览器窗口,并在其中加载指定URL地址的网页,其语法格式如下:
1 | Var window=window.open(url,windowname[,location]); |
Date对象
Date对象是一个有关日期和时间的对象,具有动态性,即必须使用new运算符创建一个实例。例如:
1 | dateObj=new Date(); |
Date对象没有提供直接访问的属性,只具有获取和设置日期和时间的方法,其常用方法如表7所示。