函数

函数是定义一次但却可以调用或执行任意多次的一段JS代码。函数有时会有参数,即
函数被调用时指定了值的局部变量。函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值。
一.函数声明
函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以
在任何地方、任何时候调用执行。ECMAScript 中的函数使用function 关键字来声明,后跟
一组参数以及函数体。
function box() { //没有参数的函数
alert('只有函数被调用,我才会被之执行');
}
box(); //直接调用函数
function box(name, age) { //带参数的函数
alert('你的姓名:'+name+',年龄:'+age);
}
box('ppk',28); //调用函数,并传参
二.return返回值
带参和不带参的函数,都没有定义返回值,而是调用后直接执行的。实际上,任何函数
都可以通过return 语句跟后面的要返回的值来实现返回值。
function box() { //没有参数的函数
return '我被返回了!'; //通过return 把函数的最终值返回
}
alert(box()); //调用函数会得到返回值,然后外面输出
function box(name, age) { //有参数的函数
return '你的姓名:'+name+',年龄:'+age;//通过return 把函数的最终值返回
}
alert(box('ppk', 28)); //调用函数得到返回值,然后外面输出
我们还可以把函数的返回值赋给一个变量,然后通过变量进行操作。
function box(num1, num2) {
return num1 * num2;
}
var num = box(10, 5); //函数得到的返回值赋给变量
alert(num);
return 语句还有一个功能就是退出当前函数,注意和break 的区别。PS:break 用在循环
和switch 分支语句里。
function box(num) {
if (num < 5) return num; //满足条件,就返回num
return 100; //返回之后,就不执行下面的语句了
}
alert(box(10));

对象

一.Object类型
到目前为止,我们使用的引用类型最多的可能就是Object 类型了。虽然Object 的实例
不具备多少功能,但对于在应用程序中的存储和传输数据而言,它确实是非常理想的选择。
创建Object 类型有两种。一种是使用new 运算符,一种是字面量表示法。
1.使用new 运算符创建Object
var box = new Object(); //new 方式
box.name = 'ppk'; //创建属性字段
box.age = 28; //创建属性字段
alert(box.name);
2.new 关键字可以省略
var box = Object(); //省略了new 关键字
3.使用字面量方式创建Object
var box = { //字面量方式
name : 'ppk', //创建属性字段
age : 28
};
4.属性字段也可以使用字符串形式
var box = {
'name' : 'ppk', //也可以用字符串形式
'age' : 28
};
5.使用字面量及传统复制方式
var box = {}; //字面量方式声明空的对象
box.name = 'ppk'; //点符号给属性复制
box.age = 28;
6.两种属性输出方式
alert(box.age); //点表示法输出
alert(box['age']); //中括号表示法输出,注意引号

在实际开发过程中,一般我们更加喜欢字面量的声明方式。因为它清晰,语法代码少,
而且还给人一种封装的感觉。字面量也是向函数传递大量可选参数的首选方式。
function box(obj) { //参数是一个对象
if (obj.name != undefined) alert(obj.name); //判断属性是否存在
if (obj.age != undefined) alert(obj.age);
}
box({ //调用函数传递一个对象
name : 'ppk',
age : 28
});
数组
Array类型
除了Object 类型之外,Array 类型是ECMAScript 最常用的类型。而且ECMAScript 中
的Array 类型和其他语言中的数组有着很大的区别。虽然数组都是有序排列,但ECMAScript
中的数组每个元素可以保存任何类型。ECMAScript 中数组的大小也是可以调整的。
创建Array 类型有两种方式:第一种是new 运算符,第二种是字面量。
1.使用new 关键字创建数组
var box = new Array(); //创建了一个数组
var box = new Array(10); //创建一个包含10 个元素的数组
var box = new Array('ppk',28,'教师','邯郸'); //创建一个数组并分配好了元素
2.以上三种方法,可以省略new 关键字。
var box = Array(); //省略了new 关键字
3 使用字面量方式创建数组
var box = []; //创建一个空的数组
var box = ['ppk',28,'教师','邯郸']; //创建包含元素的数组
var box = [1,2,]; //禁止这么做,IE 会识别3 个元素
var box = [,,,,,]; //同样,IE 的会有识别问题
4.使用索引下标来读取数组的值
alert(box[2]); //获取第三个元素
box[2] = '学生'; //修改第三个元素
box[4] = '计算机编程'; //增加第五个元素
5.使用length 属性获取数组元素量
alert(box.length) //获取元素个数
box.length = 10; //强制元素个数
box[box.length] = 'JS 技术'; //通过length 给数组增加一个元素

Date类型
ECMAScript 中的Date 类型是在早期Java 中java.util.Date 类基础上构建的。为此,Date
类型使用UTC (Coordinated Universal Time,国际协调时间[又称世界统一时间]) 1970 年1 月
1 日午夜(零时)开始经过的毫秒来保存日期。在使用这种数据存储格式的条件下,Date 类型
保存的日期能够精确到1970 年1 月1 日之前或之后的285616 年。
创建一个日期对象,使用new 运算符和Date 构造方法(构造函数)即可。
var box = new Date(); //创建一个日期对象
在调用Date 构造方法而不传递参数的情况下,新建的对象自动获取当前的时间和日期。
alert(box); //不同浏览器显示不同
ECMAScript 提供了两个方法,Date.parse()和Date.UTC()。Date.parse()方法接收一个表
示日期的字符串参数,然后尝试根据这个字符串返回相应的毫秒数。ECMA-262 没有定义
Date.parse()应该支持哪种日期格式,因此方法的行为因实现而异,因地区而异。默认通常接
收的日期格式如下:
1.'月/日/年',如6/13/2011;
2.'英文月名日, 年',如May 25, 2004;
3.'英文星期几英文月名日年时:分:秒时区',如Tue May 25 2004 00:00:00 GMT-070
alert(Date.parse('6/13/2011')); //1307894400000
如果Date.parse()没有传入或者不是标准的日期格式,那么就会返回NaN。
alert(Date.parse()); //NaN
如果想输出指定的日期,那么把Date.parse()传入Date 构造方法里。
var box = new Date(Date.parse('6/13/2011'));//Mon Jun 13 2011 00:00:00 GMT+0800
var box = new Date('6/13/2011'); //直接传入,Date.parse()后台被调用