内容摘要:
基本语法
运算符
流程控制
函数
对象
数组
一.脚本语言JavaScript
脚本语言是一种解释性的语言,脚本语言不需要编译,他们一般需要解释器才能运行,
JavaScript是一种脚本语言,它可以被嵌入HTML的文件之中。通过JavaScript可以做到响应用户的需求事件(如表单的输入)。
二.JavaScript的基本语法
1.JavaScript脚本代码的位置
·放置在<script></script>标签对之间.
<script language="javascript">
<!--
alert(new Date());
-->
</script>
·放置在一个单独的文件中
html文件内容:
<html>
<script src="script.js" language="javascript"></script>
</html>
script.js文件内容:
alert(new Date());
·将脚本程序代码作为属性值.
<a href="javascript: alert(new Date());">javascript</a>
<input type=button value=test οnclick="alert(new Date())">
2.保留关键字
abstract,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,
extends,false,final,finally,float,for,function,goto,if,implements,import,in,instanceof,
int,interface,long,native,new,null,package,private,proteted,public,return,short,static,
super,switch,synchronized,this,throw,throws,transient,true,try,var,void,while,with
3.标识符
标识符是指JavaScript中定义的符号,例如:变量名、函数名,数组名等.
标识可以由任意顺序的大小写字母、数字、下划线和美元符号组成,但标识符不能以数字开头,不能是保留关键字。
合法的标识符举例: indentifier、username、user_name、_userName、$username
非法的标识符举例: int、98.3、Hello World
4.表达式与注释
JavaScript大小写敏感
每条功能执行语句的最后必须用分号结束,每个词之间用空格、制表符、换行符或大括号、小括号这样的分隔符隔开.
JavaScript程序注释: /*...*/中可以嵌套//注释,但不能嵌套/*...*/
5.基本数据类型与常量
常量
·整型常量
十六进制以0x或0X开头,例如: 0x8a
八进制以0开头,例如: 0123
十进制的第一位不能是0(数字0除外),例如: 123
·实型常量
12.32、193.98、5E7、4e5等.
·布尔值:
ture和false
·字符串常量
"abc"、"a"
字符串中的特殊字符,需要以反斜杠(\)后跟一个普通字符来表示,例如: \r、\n、\t、\b、\'、\"、\\
·null常量
·undefined常量
变量
·变量:
定义一个变量,系统就会为之分配一块内存,程序可以用变量名来表示这块内存中的数据.
·声名变量:
使用var关键字,例如: var name;
·变量赋值
声名变量的同时可以为其赋值,例如: var name = "zhangsan";
对已赋值的变量赋予一个其他类型的数据,例如: name = 123;
可以不事先声明变量而直接使用,例如: x = 1234;
6.运算符
算术运算符
+ 加法或正值运算符,还能实现字符串连接.
- 减法或负值运算符
* 乘法运算符
/ 除法运算符
% 模运算符,求余数
++ 自增,将变量加1后再将结果赋给这个变量. ++x:先赋值再自增,x++:先自增再赋值.
-- 自减,将变量减1后再将结果赋给这个变量.
赋值运算符
= 赋值
+= 将变量与所赋的值相加后的结果再赋值给该变量.
-= 将变量与所赋的值相减后的结果再赋值给该变量.
*= 将变量与所赋的值相乘后的结果再赋值给该变量.
/= 将变量与所赋的值相除后的结果再赋值给该变量.
%= 将变量与所赋的值求模后的结果再赋值给该变量.
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
逻辑运算符
&& 逻辑与
|| 逻辑或
! 逻辑非
位运算符
& 与运算符,两个位都为1,结果才为1,否则为0
| 或运算符,两个位都为0,结果才为0,否则为1
^ 异或运算符,两个位不同,结果才为1,否则为0
>> 右移,二进制位右移n位,左边移空部分补上原来的最高位值,相当于除以2的n次方
<< 左移,二进制位左移n位,右边移空部分补0,相当于乘以2的n次方
>>> 二进制位右移n位,左边补0,
7.程序流程控制
顺序结构
if条件选择语句
·if(条件语句){执行语句}
多学两招: if(x == null)或if(typeof(x) == "undefined")可以简写成if(!x).
·if(条件语句){执行语句块1} else{执行语句块2}
多学两招: 变量 = 布尔表达式?语句1:语句2,例如: var y = x>0?x:-x;
·if(条件语句1){执行语句块1} else if(条件语句n){执行语句块n} else{执行语句块n+1}
switch选择语句
switch(表达式)
{
case 取值1:
语句块1
break;
...
case 取值n:
语句块n
break;
default:
语句块n+1
break;
}
while循环语句
while(条件表达式语句)
{
执行语句块
}
do while语句
do
{
执行语句块
}while(条件表达式语句);
for循环语句
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句块
}
break与continue语句
break:
st:while(true)
{
while(true)
{
break st;
}
}
continue:跳过本次循环进入下一轮循环.
8.函数
函数的定义与调用
function 函数名 (参数列表)
{
程序代码
return 表达式;
}
函数的调用
·函数名(参数1,参数2,...)
·变量 = 函数名(参数1,参数2,...)
·在程序中直接使用返回结果: alert("sum=" + square(2,3));
全局变量与局部变量
参数个数可变的函数
在函数内部使用arguments对象来访问调用程序传递的所有参数.
function testparams()
{
var params = "";
for(var i=0;i<arguments.length;i++)
params = params + "" + arguments[i];
alert(params);
}
testparams("abc",123);
创建动态函数
var varName = new Function(argument1,...lastArgument);
所有的参数都必须是字符串类型,最后的参数必须是这个动态函数的功能程序代码.例
var square = new Function("x","y","var sum;sum=x*x + y*y;return sum;");
Javascript的系统函数
·encodeURI: 返回对一个URI字符串编码后的结果.
·decodeURI: 将一个已编码的URI字符串解码成最初始的字符串并返回.
·parseInt(numString,[radix]): 将一个字符串按指定的进制转换成整数.
·parseFloat: 将一个字符串转换成对应的小数.
·isNaN: 用于检测parseInt和parseFloat方法的返回值是否为NaN.
·escape: 返回对一个字符串进行编码后的结果字符串.
·unescape: 将一个用escape方法编码的结果字符串解码成原始字符串并返回.
·eval: 将其中的参数字符串作为一个JavaScript表达式执行.
9.对象
对象与对象实例
·对象中所包含的变量就是对象的属性
·对象中所包含的对属性进行操作的函数就是对象的方法
·对象的属性和方法都叫对象的成员
·对象是对某一类事物的描述,是抽象上的概念,而对象实例是一类事物中的具体个例.
·能够被用来创建对象实例的函数就叫做对象的构造函数,只要定义了一个对象的构造函数,就等于定义了一个对象。
使用new关键字和对象的构造函数就可以创建对象实例,语法格式如下:
var objInstance = new ObjName(传递给该对象的实际参数列表);
·成员变量访问: 对象实例.成员变量 或 对象实例["成员变量"]
<script>
function Person()
{
}
var person1 = new Person();
person1.age = 18;
person1.name = "zxx";
function sayFunc()
{
alert(person1.name + ":" + person1.age);
}
person1.say = sayFunc;
person1.say();
</script>
构造方法与this关键字
·为一个对象实例新增加的属性和方法,不会增加到同一个对象所产生的其它对象实例上.
·所有的实例对象在创建后都会自动调用构造函数,在构造函数中增加的属性和方法会被增加到每个对象实例上.
·对象实例是用new关键字创建的,在构造方法中不要有返回结果的return语句.
·调用对象的成员方法时,需要使用"对象实例.成员方法"的形式,很显然,用作成员方法的函数被调用时,一定伴随有某个对象实例.
所以,this关键字一般只在用作对象成员方法的函数中出现.
<script>
function Person(name,age)
{
this.age = age;
this.name = name;
this.say = sayFunc;
}
function sayFunc()
{
alert(this.name + ":" + this.age);
}
var person1 = new Person("张三",18);
person1.say();
</script>
函数中参数传递,在函数中修改参数值的情况
·基本类型以值传递参数
·对象实例以引用传递参数
10.Javascript的内部对象
对象分类
·动态对象
使用"对象实例名.成员"的格式来访问其属性和方法.
·静态对象
直接使用"对象名.成员"的格式来访问其属性和方法.
内部对象
·Object对象
Object对提供了一种创建自定义对象的简单方式,不需要程序员再定义构造函数.
var person = new Object();
·String对象
·length属性: string.length
·anchor方法: string.anchor("para1")效果: <A NAME="para1">string</A>
·big方法: string.big()效果: <BIG>string</BIG>
·bold方法: string.bold()效果: <B>string</B>
·fontcolor方法: string.fontcolor("red")效果: <FONT COLOR="red">string</FONT>
·link方法: string.link(URL)效果: <A HREF="URL">string</A>
·charAt方法: 获取索引位置的字符. 例string.charAt(3).
注意: 一个字符串中的第一个字符的索引位置为0.
·charCodeAt方法: 获取索引位置的字符的unicode编码. 例string.charAt(3).toString(16).
·indexOf方法: 获取字符串的索引位置: string.indexOf("substring");
·lastindexOf方法: 获取字符串的索引位置,从后向前搜索
·match,search方法
·replace,split方法
·slice方法
·substr,substring方法
·Math对象
·Math对象静态对象,不能使用new关键字创建对象实例,应直接使用"对象名.成员"的格式来访问其属性或方法.
例如:var num = Math.random();
·Date对象
toString方法
toString方法是JavaScript中的所有内部对象的一个成员方法,它的主要作用就是将对象中的数据转换成某种格式的字符串来表示,具体的转换方式取决于对象的类型.
11.对象专用语句
with语句
for...in语句
12.数组
数组列表
·数组列表用于表示一组数据的集合,它由一对方括号包围,列表中的每个元素用逗号分隔,数组元素可以是任意类型的数据(包括其他数组).
·对于每个数组变量,都有一个length属性,表示该数组中元素的个数.
·使用"数组变量名[索引号]"的格式来访问每个数组元素。数组列表中的第一个元素的索引号为0.
·数组列表的每个元素既可以是有效的JavaScript表达式,也可以为空,空元素的值为undefined.
·熟组元素本身又是数组,这就叫数组的数组.使用"数组变量名[子数组索引号][子数组中的元素索引号]"的格式来访问数组的数组中的元素.
var arr = ["zs",123,'li',3.5];
for(var i=0;i<arr.length;i++)
{
alert(arr[i]);
}
Array对象,三种构造方法形式:
·Array()
·Array(4)
·Array(3.5,"abc",3)
程序示例:
var x,str = "";
var arr = new Array();
arr[0] = 3.5;
arr[1] = "abc";
arr[2] = 3;
arr.sort();
for(x in arr)
{
str = str + x + ":" + arr[x] + "\n";
}