函数
函数对于任何语言来说都是一个核心的概念,通过函数可以封装任意多条语句,而且可以在任何地方,任何时候调用执行.ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体.
语法
function functionName(arg0,arg1....argN){
statements
}
示例
function sayHi(name,message){
alert("hello"+name+","+"message");
}
这个函数可以通过其函数名来调用,后面还要加上一对圆括号和参数(多个参数用逗号隔开).调用sayHi( )函数的代码如下:
sayHi("jack","你最近怎么样");
//hello jack,你最近怎么样
返回值
ECMAScript中的函数在定义时不必指定是否返回值.实际上,任何函数在任何时候都可以通过return语句后跟要返回的值来实现返回值.
举个栗子
function sum(num1,num2){
return num1+num2;
}
console,log(sum(2,3));
//5
函数在执行完return语句之后会停止并立即退出,位于return语句之后的任何代码都永远不会执行.
例如
function sum(num1,num2){
return num1+num2;
alert("hello"); //不会执行
}
这个例子中,alert( )函数位于return语句后面,所以永远不会执行弹出警示框.
一个函数中也可以包含多个return
function sum(num1,num2){
if(num1<num2){
return num1+num2;
}else{
return num1-num2;
}
}
另外,return语句也可以不带任何返回值,在这种情况下,函数在停止执行后将返回undefined值,这种用法用于在需要提前停止函数执行但不需要任何返回值的情况下使用.
**注:**推荐做法是要么让函数始终都返回一个值,要么永远都不要返回值
参数
ECMAScript函数不介意传递进来的参数个数,也不在乎传进来的参数是什么数据类型.即使你定义的函数只接受两个参数,在调用这个函数的时候也未必一定要传递两个参数.
**原因:**在ECMAScript中的参数在内部是用一个数组来表示额.函数接受到的始终都是这个数组
在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数.
arguments对象只是与数组类似(并不是Array的实例),因为可以使用方括号语法来访问它的每一个元素(第一个元素为arguments[0],第二个为arguments[1],以此类推),使用length属性来确认传递进来多少参数.
举个栗子
function sayHi(){
alert("hello"+arguments[0]+","+arguments[1]);
}
这个重写的函数中不包括命名的参数,但功能依旧.
调用length属性来检测传入的参数的个数
function num(){
alert(arguments.length);
}
num(1,2); //2
num(); //0
num(12); //1
没有重载
在ECMAScript中,定义了两个名字相同的函数,该名字只属于后定义的函数
举个栗子
function sum(num){
return num+100;
}
function sum(num){
return num+200;
}
console.log(sum(100));//300
sum( )函数被定义了两次,但是最后的结果返回为300,所以是最后一次定义生效了.
小结
- ECMAScript中的基本数据类型包括undefined,null,boolean,string,number.
- ECMAScript中有一个复杂数据类型,为object,这类型是这门语言中所有对象的基础类型
- 无需指定函数的返回值,也可以在任何时候指定返回值,未指定返回值的时候函数返回的是一个特殊的undefined值
- ECMAScript中的函数参数是以一个数组的形式传递的
- 可以通过arguments对象来访问参数
- 不能重载