JavaScript基本概念之函数
2017-05-18 本文已影响16人
胖胖冰
函数
ECMAScript 中的函数使用 function 关键字来声明,后跟一组参数以及函数体。
function functionName(arg0, arg1, ... , argN){
statements
}
function sayHi(name, message) {
alert("Hello" + name + "," + message);
}
sayHi("Icey", "how are you today?");
function sum(num1, num2){
return num1+num2;
}
function sum(num1, num2){
return num1+num2;
alert("Hello world!") //永远不会执行
}
function diff(num1, num2) {
if (num1 < num2) {
return num2 - num1;
} else {
return num1 - num2;
}
}
function sayHi(name, message) {
return; //返回undefined
alert('Hello' + name + ',' + message); //永远不会调用
}
严格模式下的一些限制:
- 不能把函数命名为eval和arguments
- 不能把参数命名为eval和arguments
- 不能出现两个命名参数同名的情况
理解参数
ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的始终是这个数组,而不关心数组中包含哪些参数。
实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
其实,arguments 对象只是与数组类似(他并不是Array的实例),因为可以使用方括号语法访问他的每一个元素,用length属性来确定传递进来多少个参数。
function sayHi() {
return; //返回undefined
alert('Hello' + arguments[0] + ',' + arguments[1]); //永远不会调用
}
function howManyArgs() {
alert(arguments.length);
}
howManyArgs("string",45); //2
howManyArgs(); //0
howManyArgs(12); //1
function doAdd() {
if (arguments.length == 1) {
alert(arguments[0]+10);
}else if(arguments.length == 2){
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); //20
doAdd(30,20); //50
function doAdd(num1, num2) {
if (arguments.length == 1) {
alert(num1+10);
}else if(arguments.length == 2){
alert(arguments[0] + num2);
}
}
function doAdd(num1, num2) {
arguments[1] = 10;
alert(arguments[0] + num2);
}
每次执行这个doAdd()函数都会重写第二个参数(num=10)。