------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
Js的简单介绍和基础语法:
Javascript的简单介绍:
Javascript就是一种在浏览器端执行的语言,无需和服务器进行交互,是一种纯前端的语言。
Javascript是解释型语言,无需编译就可以随时运行,哪怕语法有错误,没有语法错误的部分还能够正确运行。
JS代码位置:
Js代码放到<script>标签中,script可以放在任意位置,而且可以有多个<script>标签。
放在<head>中的<script>在body加载之前就已经运行了。写在<body>中的<script>是随着页面的加载而一个个执行的。
JS也可以也可以单独写到js文件中,然后在使用的页面中引用<script src=”test.js” type=”text/javascript”></script>。这样写可以使多页面共享、减少网络流量。
事件:
JS中也有事件的概念,当按钮被点击时也可以执行JS:
<input type=”button” οnclick=”alert(‘99’)”value=”99”/>
<a href="1.htm"onclick="alert('hello')">点点</a>
事件中的特例:<a href="javascript:alert('hello')">点点</a> 只有超链接的href中的JavaScript中才需要加” javascript:”,因为他不是事件,而是把”javascript:”看成像”http:”、”ftp:”、”thunder://”、”ed2k://”、
mailto:一样的网络协议,交由js解析引擎处理。只有href中这是一个特例。
JS中的变量:
1.JS中既可以使用双引号声明字符串,也可以使用单引号,主要是为了和html继承,避免转义符的麻烦。
2.JS中有null、underfined两种。null表示变量值为空,underfined表示变量还未初始化,没有指向任何对象。
3.JS是弱类型,声明变量时不能:int i=0;只能通过var i=10;一旦指向10,i就是int类型了。
var i=”abc”; 此时i有变成了string类型,嫁鸡随鸡,嫁狗随狗,可以指向任意类型
4.JS中也可以不用var声明: i =10; 此时i是全局变量,除非确实想用全局变量,否则最好加上var.
判断变量的初始化:
JS中判断变量、参数是否初始化的三种方法:
Var x;
If(x==null){
alert(‘null’);
}
If(typeof(x)==”underfined”){
alert(‘underfined’);
}
If(X){} 变量被初始化了或者变量不为空或者不为0
If(!x){
alert(‘不x’);
}
推荐用最后一种方法
函数的声明:
function 函数名([参数1],[参数2],…) {算法}
不需要声明返回值类型、参数类型。
JS中不像C#中那样要求所有路径都有返回值,如果没有返回值,默认为undefined。
例:
function add(i1, i2) {//只是声明,不会立即执行
if (i1 > i2) { //js不会报错(C#中:不是所有的方法都有返回值)
return i1 + i2;
} //如果没有返回值,默认为undefined
//return i1 + i2;
}
匿名函数:
1.var f1 = function (i1, i2) { return i1 +i2; }; //一个委托指向一个函数
alert(f1(5, 10));
2. alert(function (i1, i2) { return i1 +i2; }(10,10));//直接声明一个匿名函数,立即使用,可以避免命名冲突
JS面向对象基础:
JS中没有类的语法,是用函数闭包(closure)模拟出来的,讲解的时候还是用C#中类、构造函数的概念,JS中的String、Date等“类”都被叫做“对象”。Javascript中声明类(类其实是对象)
声明类:
function Person(name, age) { //声明一个函数,当成类用
this.Name= name;
this.Age= age;
this.SayHello= function () { alert(“你好,我是”+this.Name+”,我”+this.Age+”岁了”); };
}
var p1=new Person("tom", 30); //不要去了new,否则就变成调用函数了
p1. SayHello();
必须要声明类名,function Person(name, age)可以看做是声明构造函数,Name、Age这些属性是动态添加的。
//动态添加属性
p1.Gender = "男D";
Array对象:
JS中的Array对象就是数组而且是一个动态数组,无需预先制定大小
vararr = new Array();
arr[0] = "tom";
arr[1] = "jerry";
arr[2] = "lily";
for (var i = 0; i < arr.length; i++){
alert(arr[i]);
}
Array还是一个Dictionary、栈:
Dictionary:
var arr = new Array();
arr[0] = "tom";
arr[1] = "jim";
for (var i in arr) { //打印出来的是0,1,2.......证明了数组用法是Dictionary用法的一个特例
alert(i+arr[i]);
}
var dict = new Array();
dict["人"] = "ren";
dict["口"] = "kou";
dict["手"] ="shou";
// alert(dict["口"]);
// alert(dict.口);
// dict[0] = "tom";
for (var k in dict) { //js中的foreach语法,打印出来的值是key
alert(k); //输出人 口 手
}
Array简化声明:
var arr1 = {30,50,80}; //数组的简化声明方式
vararr2={"tom":30,"jerry":50}; //字典的简化声明方式
alert(arr.join(“,”)); 使用join方法将数组风格的Array拼接为字符串。