1. 变量的定义和作用域
var a = 1; 类型为Number
var a = "1"; 类型为String
Number和String都是JS内置的对象。
作用域: 在函数外面定义--全局; 在方法内部定义--在方法体内有效。
变量是弱类型的,整数与字符串相加得到字符串。
不区分单引号和双引号;
2.语句、代码和代码块
JavaScript是发出的指令。每行句尾可以加上分号,多句同一行需要用分号隔开。代码块是用来更好的组织代码的。代码块使用花括号包裹。
3.注释
单行注释://
多行注释:/*开头,*/结尾
4.运算符
1) 算术符号:+、-、*、/、%(取余,保留整数)、++、--
说明:/除不尽有小数,能除尽为整数。JS不区分整数小数?
2)赋值运算符:=、+=、-=、*=、/=、%=
3)比较运算符:==、===(全等,值和类型)、!=、>、<、>=、<=
4)逻辑运算符:&&、||、!
5)条件赋值: ? :
variablename=(condition)?value1:value25.分支语句
1)if...else... if...else if...else
2)switch...case...
switch():判读的类型无限制。c中就只能是int型和char('a')型。
default不匹配条件时的操作。
6.循环语句
1)for(var a = 0; a < 10; a++)
2)while(a < 10) { a++ } ; do { a-- } while(a>0)
break:退出循环; continue:跳到下次循环。
3) for/in - 循环遍历对象的属性
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
7.函数
<script>
function goToUrl(strUrl)
{
location.href = strUrl;
} <pre name="code" class="html"><script>
1) 函数需要返回值时,用return即可。
2) 函数可以在HTML事件/ FORM / JavaScript 中被调用,如:
a. HTML元素事件回调: <body οnlοad="goToUrl('http://www.baidu.com')" > b. FORM元素事件回调 <select name="somelist" οnchange="onSomeThingChanged()">
c. 超链接目标
<a href="javascript:goToUrl('www.baidu.com')" > go </a>
d. 直接在JavaScript中调用 <script> goToUrl(”www.baidu.com"); </script>
8. 类
一般的JavaScript是不需要使自定义类,不会这么复杂。难调试,不便阅读。如果一定要写什么复杂的功能,如菜单树之类的,就得写一点类来完成了。
1) 类定义a. 不带参数
<script>
function SampleClass()
{
// 变量变量定义
this.nId = 10;
// 成员函数定义
this.plusId = function (nPlus)
{
return this.nId + nPlus;
}
}
</script>
b. 带参数
function MenuItem(l, h, t)
{
this.label = l;
this.href = h;
this.target = t;
this.toHtml = function()
{
var html = "<a href='" + this.href + "' ";
if(this.target != null)
html += (" target='" + this.target + "' ");
html += " >" + this.label + "</a>";
return html;
}
}
2)创建类的实例
var item = new MenuItem("haha", "http://www.baidu.com", null);
3)类需要注意
b. 成员函数如果想返回值,就用return,想return什么类型都不必事先声明,直接return就好
c. 对于学习C++和Java的程序员来说,要明白var p = new SomeClass();这句中的new其实就是创建一个对象并返回其指针
d. 考虑使用Object类9. Object类
大多数情况下都不需要自己声明一个类,可以直接使用Object类来定义一个结构,而无需事先声明这个结构的形式。
function createObject()
{
var obj = new Object();
obj.x = 10;
obj.y = 11;
return obj;
}
这个函数随意的创建了一个object,为其添加成员 x, y,并没有通知任何人(无prototype声明)。而使用者也是直接就可以调用其 o.x , o.y
<script>
var o = createObject();
document.writeln("x=" + o.x + ", y=" + o.y);
</script>
10. 数组Array
<script>
// 创建
var a = new Array();
// 遍例
for(var i=0; i<a.length; i++)
{
var e = a[i];
}
// 添加
var item = new MenuItem("000");
this.itemArray.push(item);
</script>
数组作为成员变量
function Menu()
{
this.itemArray = new Array();
this.addItem = function(l, h, t)
{
var item = new MenuItem(l,h,t);
this.itemArray.push(item);
};
}
1) 添加元素
push 方法将新元素添加到一个数组中,并返回数组的新长度值。
arrayObj.push([item1 [item2 [. . . [itemN ]]]])
参数:
arrayObj--必选项。一个 Array 对象。
item, item2,. . . itemN--可选项。该 Array 的新元素。
说明:
push 方法将以新元素出现的顺序添加这些元素。如果参数之一为数组,那么该数组将作为单个元素添加到数组中。如果要合并两个或多个数组中的元素,请使用 concat 方法。
var arr = new Array(0,1,2,3,4);
// 参数是一个或多个
var len = arr.push(5,6);
//len = arr.push(7);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
2) 删除元素
pop 方法
移除数组中的最后一个元素并返回该元素。
arrayObj.pop( )
必选的 arrayObj 引用是一个 Array 对象。
说明
如果该数组为空,那么将返回 undefined。
shift 方法
移除数组中的第一个元素并返回该元素。arrayObj.shift( )
必选的 arrayObj 引用是一个 Array 对象。
说明
shift 方法可移除数组中的第一个元素并返回该元素。
var arr = new Array(0,1,2,3,4);
var remove = arr.pop();
alert(remove);
alert(arr.length);
splice 方法
从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
参数:
arrayObj--必选项。一个 Array 对象。
start--必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
deleteCount--必选项。要移除的元素的个数。
item1, item2,. . .,itemN--必选项。要在所移除元素的位置上插入的新元素。
说明:
splice 方法可以移除从 start 位置开始的指定个数的元素并插入新元素,从而修改 arrayObj。返回值是一个由所移除的元素组成的新 Array 对象。
如果你不想增加新的元素进去,那么不要传递第三个参数即可!
var arr = new Array(0,1,2,3,4);
// 删除从2开始的两个元素,位置从0开始
// 返回移除元素的数组
var reArr = arr.splice(2,2);
// 可以在移除元素的位置替换新的元素进去
//只是从移除开始位置进行增加新元素,如果你移除两个元素,你完全可以增加10个新元素进去
//var reArr = arr.splice(2,2,6,7,8,9);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
concat 方法 (Array)
返回一个新数组,这个新数组是由两个或更多数组组合而成的。
array1.concat([item1[, item2[, . . . [, itemN]]]])
参数:
array1 --必选项。其他所有数组要进行连接的 Array 对象。
item1,. . ., itemN--可选项。要连接到 array1 末尾的其他项目。
说明:
concat 方法返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。
要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。如果某一项为数组,那么添加其内容到 array1 的末尾。如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
以下为从源数组复制元素到结果数组:
对于从正被连接到新数组的数组中复制的对象参数,复制后仍然指向相同的对象。不论新数组和源数组中哪一个有改变,都将引起另一个的改变。对于连接到新数组的数值或字符串,只复制其值。一个数组中值有改变并不影响另一个数组中的值。
var arr = new Array(0,1);
var arr2 = new Array(3,4);
var arr = arr.concat(arr2);
for(var i=0;i<arr.length;i++){
alert(arr[i]);
}
执行顺序与生命周期
1) 从上到下依次执行/解析,调用一个function时,必须保证该function已经被解析/声明了。这就是一般要把function定义在<head>的原因。
2) 所有的function与变量只在本页面内有效,当离开页面后,新的页面内无法访问上一页内声明的变量或函数。如果一定要访问,可以使用Cookie也存一下,到下一页再读出来。