1.JavaScript
是一种在浏览器端执行的语言。
JS 是解释型语言,无需编译就可以随时运行,即使有语法错误,没有语法错误的部分还能正确运行。
2.JS 开发环境
3.JS入门
<script type="text/javascript" >
alert(new Date().toLocaleDateString());
</script>
放到<head>中的<script>在body加载之前就已经运行了。
在<head>中和<body>中,<script>可以写多次
html页面从上往下执行。
<!--引用公共的JS文件,就像C#中的添加引用-->
<script src="common.js" type="text/javascript" ></script>
4.事件
<a href ="javascript:alert('Hello')">点击</a>
<a href ="1.htm" οnclick="alert('Hello2')">点点</a>
只有在超链接的 href 中的 javascript中才需要加“javascript”,因为它不是事件,而是把“Javascript”看成像“http:”,"ftp:","thunder://","ed2k://","mailto:"一样的网络协议
交由js解析引擎处理,只有href中是一个特例。
button的onclick事件:
<input type="button" value="点" οnclick="alert('点我啊!')" />
5.JS 的变量
javascript 中即可双引号,单引号声明变量
Javascript中有null,undefined两种,null 表示变量的值为空,undefined 则表示变量还没有指向任何对象,未初始化。
<script type="text/javascript">
var i=10;//声明一个变量,名字为i,指向10 这个整数 ,一旦指向10,i就是int 类型了。
i="abc";//嫁鸡随鸡嫁狗随狗,制定类型之后,还可以再变
alert(i);
</script>
6.JS 排错与调试
IE调试选项要打开,Internet选项/高级,去掉“禁用脚本调试”前的勾选
以调试方式运行页面
设置断点,监视变量等操作和C#一样
7.判断变量初始化
JS中判断一个变量是否为空,是否已经初始化的三种方法:
(1) var x;
if(x==null);
{ alert("null");}
(2) if(tyeof(x)=="undefined")
{ alert('undefined');}
(3)if(!x) //推荐用这种写法
{alert('不 x ');}
if(x){} 变量被初始化了或者变量不为空或者变量不为0
8.函数的声明
Javascript中声明函数的方式:(没有返回值类型,没有参数类型)
function add(i1,i2){
return i1+i2;
}
注意格式
<script type ="text/javascript" >
function add(i1,i2){
return i1+i2;
}
var i3=add(1,2);
alert(i3);
</script>
注:函数的使用可以放在声明的前后,都可以。
没有返回值的话,就是undefined
9.匿名函数
var f1=function(i1,i2){
return i1+i2;
}
alert(f1(i1,i2));
说明:声明一个函数,用f1委托指向它,后面在调用f1.把f1当做函数在用
少见可行的用法:(直接声明一个匿名函数,立即使用)
alert(function (i1,i2){return i1+i2;} (10,10));
10.JS面向对象基础
JavaScript中没有类的语法,是用函数闭包(closure)模拟出来的。(类不是类,是对象)
<script type="text/javascript" >
function Person(name,age){ //声明一个函数,当成类用
this.Name=name;
this.Age=age;
this.SayHello=function(){alert("你好,我是"+this.Name +",我"+this.Age+"岁了!")};
//动态声明SayHello方法,指向匿名函数
}
var p1=new Person("tom",20);
p1.SayHello();
</script>
11.Array对象
在Javascript中,array是一个动态数组,无需预先定义大小,是动态的
求一个数组中的最大值:
function GetMax(arr){
var max=arr[0];
for(var i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
return max;
}
var arr1=new Array();
arr1[0]=3;
arr1[1]=2;
arr1[2]=5;
alert (GetMax(arr1));
字符串之间用 “|”隔开:
function myjoin(arr){
if(arr.length<=0){
return "";
}
var s=arr[0];
for(var i=1;i<arr.length;i++){
s=s+"|"+arr[i];
}
return s;
}
var arr=new Array();
arr[0]="tom";
arr[1]="jerry";
arr[2]="lily";
alert(myjoin(arr));
数组反向输出:
function myReverse(arr){
var temp;
for(var i=0;i<arr.length/2;i++){
temp=arr[i];
arr[i]=arr[arr.length-i-1];
arr[arr.length-i-1]=temp;
}
}
var arr2=new Array();
arr2[0]="3";
arr2[1]="a";
arr2[2]="8";
arr2[3]="haha";
alert(arr2);
myReverse(arr2);
alert(arr2);
12.JS中Dictionary
Array,不仅是一个数组,还是一个Dictionary,还是一个Stack。
var dict=new Array();
dict["人"]="ren";
dict["口"]="kou";
dict["手"]="shou";
alert(dict["口"]); //根据 key ,来取value
for(var k in dict){ //JS中没有foreach,通过for的语法,遍历key
alert(k);
}
13.Array 的简化声明
1)普通数组初始化:
var arr=[3,5,6,8,3,2];
2)字典风格的简化创建方式:
var arr={"tom":30,"jim":20};
14.数组,for及其他
//获得对象所有的成员,为什么可以获得呢?对象的成员就是以对象的key的形式出现的
for(var e in document){
alert(e);
}