一、函数是定义一次但却可以调用或执行任意多次的一段JS代码。函数有时会有参数,即函数被调用时指定了值的局部变量。函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值。
1、函数声明
ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。
function test() { //没有参数的函数
alert('只有函数被调用,此句会被执行');
}
test();
//直接调用函数
function test(name, age) { //带参数的函数
alert('你的姓名:'+name+',年龄:'+age);
}
test('bert',24); //调用函数,并传参
2、arguments对象
函数体内通过arguments对象来接收传递进来的参数。
function test(){
return arguments[0]+arguments[1]+arguments[2];
}
alert(test("Hello","World","Happy","Everyday")); //输出HelloWorldHappy
返回的arguments对象可以少于最后赋值的数量,如果多于则会最后返回undefined。
可利用length属性,来智能的判断有多少参数,然后把参数进行合理的应用。比如,要实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。
function test(){
var sum = 0;
if (arguments.length == 0) return sum; //如果没有参数,退出
for(var i = 0;i < arguments.length; i++) { //如果有,就累加
sum = sum + arguments[i];
}
return sum; //返回累加结果
}
alert(test(1,2,3,4,5));
二、对象
对象就是一种类型,即引用类型。对象的值就是引用类型的实例。ECMAScript中引用类型是一种数据结构:用于将数据和功能组合在一起,常称为类。但是EMCAScript中没有传统面向对象语言所支持的类和接口等基本结构。
1、Object类型
创建的两种方式:(1)new运算符,(2)字面量表示法
(1)new运算符
var test = new Object();
test.name = "bert";
test.age = 24;
alert(test.age);
(2)字面量表示法
实际开发过程中,更推荐字面量的声明方式。因为它清晰,语法代码少,而且还给人一种封装的感觉。字面量也是向函数传递大量可选参数的首选方式。
var test = {
name:"bert",
age:24
}; //实验证明,这里加分号或者不加没有影响
alert(test.age);
// 也可以这样输出 alert(test["age"]);
给对象创建方法
var test = {
run:function(){ //对象中方法
return "运行";
}
}
alert(test.run()); //调用对象中方法
2、Array类型
ECMAScript中数组每个元素可保存任何类型,也可以调整大小。
创建Array类型两种方式:(1)new运算符,(2)字面量表示法
(1)new运算符
var test = new Array("bert",24,"student");
(2)字面量表示法
var test = ["bert",24,"student"];
使用length属性获取数组元素量
alert(box.length); //获取数组元素个数
alert[test.length] = "加油"; //通过length给数组增加一个元素
三、对象中的方法
1、JS中所有对象都有这三种方法:(1)toLocaleString(),(2)toString(),(3)valueOf()
(1)toLocaleString()
把数组转化为本地字符串,使用地区特定的分隔符把生成的字符串连起来。
(2)toString()
把数组转换成字符串,返回值与没有参数的join()方法所返回的字符串相同
(3)valueOf()
返回Array()对象的原始值。
其中,join()方法
默认情况下,数组字符串都会以逗号隔开。如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。
var test = [
"bert",
24,
"Hello"
];
document.write(test.join("|")); //输出结果:bert|24|Hello
2、栈方法
ECMAScript为数组提供了pop()和push()方法。push()方法可以接受任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后的数组长度。pop()方法从数组末尾移除最后一个元素,减少数组的长度,并返回移除的元素。
var test=[1,2,3];
test.push(4);
alert(test); //输出结果 1,2,3,4
alert(test.pop()); //输出结果 4
3、队列方法
列队在数组的末端添加元素,从数组的前端移除元素。通过push()向数组末端添加一个元素,返回添加的元素。通过shift()方法从数组前端移除一个元素,返回移除的元素。
var test=[1,2,3];
alert(test.push(4)); //返回数组末尾添加的元素4
alert(test.shift()); //返回数组开头移除的元素1
ECMAScript还为数组提供了一个unshift()方法,它和shift()方法的功能完全相反。通过unshift()方法从数组前端添加一个元素,返回此时数组的长度。
var test=[1,2,3];
alert(test.push(4));
alert(test.unshift(0)); //在数组开头添加元素0,返回最后数组长度大小5
4、重排序方法
数组中存在两个可直接用于排序的方法:reverse()和sort()。
(1)reverse() 逆向排序
var test= [1,2,3,4,5]; //数组
alert(test.reverse()); //逆向排序方法,返回排序后的数组
alert(test); //源数组也被逆向排序了,说明是引用
(2)sort() 从小到大排序
var test = [4,1,7,3,9,2];
alert(test.sort()); //从小到大排序,返回排序后的数组
alert(test); //源数组也被从小到大排序了
5、操作方法
(1)concat()方法可以基于当前数组创建一个新数组。
var test1 = [1,2,3]; //当前数组
var test2 = test1.concat("4"); //创建新数组,在原有数组上添加新元素
alert(test2); //输出新数组
alert(test1); //原先数组没有任何变化
(2)slice()方法可以基于当前数组获取指定区域元素并创建一个新数组,即在当前数组中截取一段变成一个新的数组。
slice有两个参数,slice(start,end):start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。即-1 指最后一个元素,-2 指倒数第二个元素。end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
var test1= [1,2,3,4,5];
var test2 = test1.slice(1,3);
alert(test2); //截取的新数组,不算最后一个下标元素,2,3
alert(test1); //原先数组1,2,3,4,5
(3)splice() 方法
向/从数组中添加/删除项目,然后返回被删除的项目。
var test1 = [1,2,3,4,5];
var test2 = test1.splice(1,3);
alert(test2); //截取下标从1到3的元素,得到新数组 2,3,4
alert(test1); //原先数组被破坏 1,5