函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块、
格式
// 1、函数声明
function 函数名(形参1, 形参2, ...) {
代码块
}
// 2、函数表达式
var 函数名 = function (形参1, 形参2, ...) {
代码块
}
// 函数调用:函数名(实参1, 实参2, ...);
函数的参数
形参:在声明函数时,函数中一些不确定的值,我们可以先定义一个变量表示,这个变量我们就称之为形参。每一个形参都是一个变量声明,只不过省略了 var,但是这个时候的形参并没有值。
实参:在调用函数时,如果函数声明时有参数,就可以在括号中传入具体的值,这个叫实参。
1、实参和形参个数不等
如果实参比形参少,则没有匹配上的形参值为undefined
如果实参比形参多,则多的实参也白多
function fn(a, b) {
console.log(a, b);
}
fn(3, 5);
fn(7);
fn(10, 20, 30);
2、arguments
function fn() {
// 它是实参的集合,存在于函数的里面,是一个对象,它是一个类数组、伪数组,有长度,有下标,可以通过下标获取某一个
console.log(arguments); // [3, 5]
console.log(arguments.length);
console.log(typeof arguments); // 'object'
console.log(arguments[0]);
console.log(arguments[1]);
}
// fn(3, 5);
// fn(8, 9);
// -------------------------------------
// 案例:求不定参数的和
// function add(a, b, c) {
// console.log(a + b + c);
// }
// add(3, 5);
// add(5, 6, 7);
function add() {
var num = 0;
for (var i = 0; i < arguments.length; i++) {
// console.log(arguments[i]);
num += arguments[i];
}
console.log(num);
}
add(3, 5);
add(5, 6, 7);
add(1, 2, 3, 2, 1);
3、函数参数的类型
// 函数的参数可以是任意数据类型,包括函数
function fn(a) {
console.log(typeof a);
}
fn(3); // number
fn('ab'); // string
fn(true); // boolean
fn(null); // object
fn(); // undefined
fn([]); // object
fn({}); // object
fn(function () { }); // function