JavaScript 脚本语言作为一门功能强大、使用范围较广的程序语言,其语言基础包括数据类型、变量、运算符、函数以及核心语句等内容。本篇文章主要介绍JavaScript 脚本语言的基础知识
一:基础常识
1.脚本执行顺序:JavaScript 脚本解释器将按照程序代码出现的顺序来解释程序语句,因此可以将函数定义和变量声明放在<head>和</head>之间,此时与函数体相关的操作不会被立即执行。
2.大小写敏感:JavaScript 脚本程序对大小写敏感,相同的字母,大小写不同,代表的意义也不同
空白字符
3.空__________白字符包括空格、制表符和换行符等,在编写脚本代码时占据一定的空间,但脚本被浏览器解释执行时无任何作用。脚本程序员经常使用空格作为空白字符,JavaScript 脚本解释器是忽略任何多余空格的
注:在字符串中,空格不被忽略,而作为字符串的一部分显示出来,在编写 JavaScript 脚本代码时,经常需添加适当的空格使脚本代码层次明晰,方便相关人员查看和维护。
4.分号:在编写脚本语句时,用分号作为当前语句的结束符
5.块:在定义函数时,使用大括号“{}”将函数体封装起来
二:数据类型
首先要说明的是在javascript中没有特定的数据类型修饰符,基本数据类不管是什么类型,在定义的时候都是用var
1.整型和浮点数值:JavaScript 允许使用整数类型和浮点类型两种数值,其中整数类型包含正整数、0 和负整数;而浮点数则可以是包含小数点的实数,也可以是用科学计数法表示的实数
2 八进制和十六进制:在整数类型的数值中,数制可使用十进制、八进制以及十六进制
三.变量
1.变量标识符:与C++、Java 等高级程序语言使用多个变量标识符不同,JavaScript 脚本语言使用关键字var 作为其唯一的变量标识符,其用法为在关键字var 后面加上变量名。
2.变量作用域:要讨论变量的作用域,首先要清楚全局变量和局部变量的联系和区别:
��� 全局变量:可以在脚本中的任何位置被调用,全局变量的作用域是当前文档中整个脚本区域。
��� 局部变量:只能在此变量声明语句所属的函数内部使用,局部变量的作用域仅为该函数体。
声明变量时,要根据编程的目的决定将变量声明为全局变量还是局部变量。一般而言,保存全局信息(如表格的原始大小、下拉框包含选项对应的字符串数组等)的变量需声明为全局变量,而保存临时信息(如待输出的格式字符串、数学运算中间变量等)的变量则声明
为局部变量。
3.弱类型:JavaScript 脚本语言像其他程序语言一样,其变量都有数据类型,具体数据类型将在下一节中介绍。高级程序语言如C++、Java 等为强类型语言,与此不同的是,JavaScript 脚本语言是弱类型语言,在变量声明时不需显式地指定其数据类型,变量的数据类型将根据变量的具体内容推导出来,且根据变量内容的改变而自动更改,而强类型语在变量声明时必须显式地指定其数据类型。变量声明时不需显式指定其数据类型既是 JavaScript 脚本语言的优点也是缺点,优点是编写脚本代码时不需要指明数据类型,使变量声明过程简单明了;缺点就是有可能造成因微妙的拼写不当而引起致命的错误。
4.基本数据类型:在实现预定功能的程序代码中,一般需定义变量来存储数据(作为初始值、中间值、最终值或函数参数等)。变量包含多种类型,JavaScript 脚本语言支持的基本数据类型包括
Number 型、String 型、Boolean 型、Undefined 型、Null 型和Function 型,下面简单介绍一下几种数据类型:
4.1 Number 型:Number 型数据即为数值型数据,包括整数型和浮点型,整数型数制可以使用十进制、八进制以及十六进制标识,而浮点型为包含小数点的实数,且可用科学计数法来表示。一般来说,Number 型数据为不在括号内的数字
4.2 Undefined 型:Undefined 型即为未定义类型,用于不存在或者没有被赋初始值的变量或对象的属性,如下列语句定义变量name 为Undefined 型:
var name;定义Undefined 型变量后,可在后续的脚本代码中对其进行赋值操作,从而自动获得由其值决定的数据类型。
4.2 Null 型:Null 型数据表示空值,作用是表明数据空缺的值,一般在设定已存在的变量(或对象的属性)为空时较为常用。区分Undefined 型和Null 型数据比较麻烦,一般将Undefined 型和Null 型等同对待。
4.3 Function 型:Function 型表示函数,可以通过new 操作符和构造函数Function()来动态创建所需功能的函数,并为其添加函数体。例如:
var myFuntion = new Function()
{staments;};
JavaScript 脚本语言除了支持上述六种基本数据类型外,也支持组合类型,如数组Array和对象Object 等,下面介绍组合类型。
四:组合类型
1.Array 型:Array 型即为数组,数组是包含基本和组合数据的序列。在JavaScript 脚本语言中,每一种数据类型对应一种对象,数组本质上即为Array 对象。考察如下定义:
var score = [56,34,23,76,45];
上述语句创建数组score,中括号“[]”内的成员为数组元素。由于JavaScript 是弱类型语言,因此不要求目标数组中各元素的数据类型均相同,例如:var score = [56,34,”23”,76,”45”];
由于数组本质上为Array 对象,则可用运算符new 来创建新的数组,例如:var score=new Array(56,34,”23”,76,”45”);
访问数组中特定元素可通过该元素的索引位置index 来实现,如下列语句声明变量m 返回数组score 中第四个元素:
var m = score [3];
数组作为Array 对象,具有最重要的属性length,用来保存该数组的长度
2 Object 型:对象为可包含基本和组合数据的组合类型,且对象的成员作为对象的属性,对象的成员函数作为对象的方法。在JavaScript 脚本语言中,可通过在对象后面加句点“.”并加上对象
属性(或方法)的名称来访问对象的属性(或方法),例如:
document.bgColor
document.write(“Welcome to JavaScript World!”);
五:运算符
1 赋值运算符:JavaScript 脚本语言的赋值运算符包含“=”、“+=”、“-=”、“*=”、“/=”、“%=”、“&=”、“^=”等
运算符 举例 简要说明
= m=n 将运算符右边变量的值赋给左边变量
+= m+=n 将运算符两侧变量的值相加并将结果赋给左边变量
-= m-=n 将运算符两侧变量的值相减并将结果赋给左边变量
*= m*=n 将运算符两侧变量的值相乘并将结果赋给左边变量
/= m/=n 将运算符两侧变量的值相除并将整除的结果赋给左边变量
%= m%=n 将运算符两侧变量的值相除并将余数赋给左边变量
&= m&=n 将运算符两侧变量的值进行按位与操作并将结果赋值给左边变量
^= m^=n 将运算符两侧变量的值进行按位或操作并将结果赋值给左边变量
<<= m<<=n 将运算符左边变量的值左移由右边变量的值指定的位数,并将操作的结果赋予左边变量
>>= m>>=n 将运算符左边变量的值右移由右边变量的值指定的位数,并将操作的结果赋予左边变量
>>>= m>>>=n 将运算符左边变量的值逻辑右移由右边变量的值指定的位数,并将操作的结果赋给左边变量
赋值运算符是编写 JavaScript 脚本代码时最为常用的操作,读者应熟练掌握各个运算符的功能,避免混淆其具体作用。
2 基本数学运算符:JavaScript 脚本语言中基本的数学运算包括加、减、乘、除以及取余等,其对应的数学
运算符分别为“+”、“-”、“*”、“/”和“%”
3.位运算符:JavaScript 脚本语言支持的基本位运算符包括:“&”、“|”、“^”和“~”等。脚本代码执行位运算时先将操作数转换为二进制数,操作完成后将返回值转换为十进制
位运算符 举例 简要说明
& 9&4 按位与,若两数据对应位都是1,则该位为1,否则为0
^ 9^4 按位异或,若两数据对应位相反,则该位为1,否则为0
| 9|4 按位或,若两数据对应位都是0,则该位为0,否则为1
~ ~4 按位非,若数据对应位为0,则该位为1,否则为0
位运算符在进行数据处理、逻辑判断等方面使用较为广泛,恰当应用位运算符,可节省大量脚本代码。
3.自加和自减:自加运算符为“++”和自减运算符为“--”分别将操作数加1 或减1。值得注意的是,
自加和自减运算符放置在操作数的前面和后面含义不同。运算符写在变量名前面,则返回值
为自加或自减前的值;而写在后面,则返回值为自加或自减后的值。
4.比较运算符:JavaScript 脚本语言中用于比较两个数据的运算符称为比较运算符,包括“= =”、“!=”、“>”、“<”、“<=”、“>=”等
5.逻辑运算符:JavaScript 脚本语言的逻辑运算符包括“&&”、“||”和“!”等,用于两个逻辑型数据之间的操作,返回值的数据类型为布尔型
6.逗号运算符:编写JavaScript 脚本代码时,可使用逗号“,”将多个语句连在一起,浏览器载入该代码时,将其作为一个完整的语句来调用,但语句的返回值是最右边的语句。逗号“,”一般用于在函数定义和调用时分隔多个参数,
7.对象运算符:JavaScript 脚本语言主要支持四种对象运算符,包括点号运算符、new 运算符、delete运算符以及()运算符等。对象包含属性和方法,点号运算符用来访问对象的属性和方法。其用法是将对象名称与对象的属性(或方法)用点号隔开,例如:
var myColor=document.bgColor;
window.alert(msg);
当然,也可使用双引号“[]”来访问对象的属性,改写上述
语句:var myColor=document[" bgColor "];
new 运算符用来创建新的对象,例如创建一个新的数组对象,可以写成:var exam = new Array (43,76,34 89,90);
new 运算符可以创建程序员自定义的对象,以可以创建JavaScript 内建对象的实例。
8.typeof 运算符:typeof 运算符用于表明操作数的数据类型,返回数值类型为一个字符串。在JavaScript脚本语言中,其使用格式如下:
var myString=typeof(data);
六:javascript的循环控制结构:由于在javascript中if、if……else、while、do……while等语句与java中基本相识,所以在此就不在赘述
七:函数
JavaScript 脚本语言允许开发者通过编写函数的方式组合一些可重复使用的脚本代码块,增加了脚本代码的结构化和模块化。函数是通过参数接口进行数据传递,以实现特定的功能。
1 函数的基本组成
函数由函数定义和函数调用两部分组成,应首先定义函数,然后再进行调用,以养成良好的编程习惯。函数的定义应使用关键字 function
,其语法规则如下:
function funcName ([parameters])
{statements;
[return 表达式;]}
除了自定义函数外,JavaScript 脚本语言提供大量的内建函数,无需开发者定义即可直接调用,例如window 对象的alert()方法即为JavaScript 脚本语言支持的内建函数。函数定义过程结束后,可在文档中任意位置调用该函数。引用目标函数时,只需在函数名后加上小括号即可。若目标函数需引入参数,则需在小括号内添加传递参数。如果函数有返回值,可将最终结果赋值给一个自定义的变量并用关键字return 返回。
2 全局函数与局部函数:JavaScript 脚本语言提供了很多全局(内建)函数,在脚本编程过程中可直接调用,在此介绍四种简单的全局函数:parseInt()、parseFloat()、escape()和unescape()。
parseInt()函数的作用是将字符串转换为整数,parseFloat()函数的作用是将字符串转换为浮点数;escape()函数的作用是将一些特殊字符转换成ASCII 码,而unescape()函数的作用是将ASCII 码转换成字符。
3.作为对象的函数:JavaScript 脚本语言中所有的数据类型、数组等均可作为对象对待,函数也不例外。可以使用new 操作符和Function 对象的构造函数Function()来生成指定规则的函数,其基本语
法如下:
var funcName = new Function (arguments,statements;);
值得注意的是,上述的构造函数Function()首字母必须为大写,同时函数的参数列表与操作代码之间使用逗号隔开。
注意:在定义函数对象时,参数列表可以为空,也可有一个或多个参数,使用变量引用该函数时,应将函数执行所需要的参数传递给函数体。作为对象的函数最重要的性质即为它可以创建静态变量,给函数增加实例属性,使得函数在被调用之间也能发挥作用。作为对象的函数使用静态变量后,可以用来保存其运行的环境参数如中间值等数据。
4.函数应用注意事项
最后介绍一下在使用函数过程中应特别予以注意的几个问题,以帮助读者更好、更准确确地使用函数,并养成良好的编程习惯。具体表现在如下几点:
定义函数的位置:如果函数代码较为复杂,函数之间相互调用较多,应将所有函数的定义部分放在HTML 文档的<head>和</head>标记对之间,既可保证所有的函数在调用之前均已定义,又可使开发者后期的维护工作更为简便;
��� 函数的命名:函数的命名原则与变量的命名原则相同,但尽量不要将函数和变量取同一个名字。如因实际情况需要将函数和变量定义相近的名字,也应给函数加上可以清楚辨认的字符(如前缀func 等)以示区别;
��� 函数返回值:在函数定义代码结束时,应使用return 语句返回,即使函数不需要返回任何值;
��� 变量的作用域:区分函数中使用的变量是全局变量还是局部变量,避免调用过程中出现难以检查的错误;
��� 函数注释:在编写脚本代码时,应在适当的地方给代码的特定行添加注释语句,例如将函数的参数数量、数据类型、返回值、功能等注释清楚,既方便开发者对程序的后期维护,也方便其他人阅读和使用该函数,便于模块化编程;
��� 函数参数传递:由于 JavaScript 是弱类型语言,使用变量时并不检查其数据类型,导致一个潜在的威胁,即开发者调用函数时,传递给函数的参数数量或数据类型不满足要求而导致错误的出现。在函数调用时,应仔细检查传递给目标函数的参数变量的数量和数据类型。
其中第五点尤为值得特别关注,因由其导致的错误非常难于检测。