在JS这类解释性语言中 是不会输出引用类型的地址的

如 function test(){
var a = 1;
}
document.write(test);
//得到的结果就是test(){ var a = 1; }函数本身

定义

注意if的结构体中不能包含函数
1 函数声明
如 function test(){

}
2 函数表达式
2.1 命名函数表达式
如 var test = function abc(){
var a =1;
}
//此时函数名abc已经没有意义了 用abc();调用不到这个方法
//只有test();才能调用到这个方法
2.2 匿名函数表达式(常用)
上述可以简写为匿名的形式
如 var test = function (){
var a =1;
}
这两种写法的区别只是函数的名字不同
通过test.name 命名得到abc 匿名得到test

组成形式

1 函数名称
2 参数(可以没有)
写参数时不用写类型 其实际就会帮你var定义变量 如果写了类型会出错
所以直接 function test(a,b){ } 即可

此时函数test中的a,b即为形参
调用方法时传递进来的参数即为实参 如 test(1,2);
因为它会帮你定义变量 所以
2.1 形参个数可以比实参多 也可以比实参少
2.2 传进来的实参不管多少个 都会放进arguments中(可以理解为数组) 注意arguments只存储传递进来的实参
2.3 若改变了传递进来的实参 那么arguments也会发生改变
若改变了arguments中存的数 那么传递进来的实参也会发生改变
可以理解为二者存在映射关系 你变我也变
2.4 若想知道形参的长度 可以用 函数名.length 获取

如 function test(a,b){ } test(1);
//即a的值为1 b为undefined arguments中存有[1,2]
function test(a){ } test(1,2);
//即a的值为1
function test(a,b){a = 2; arguments[0] = 3; } test(1,2);
//先传值a为1 此时arguments中存有[1,2] 然后a值为2 此时arguments中存有[2,2] 然后a值为3 此时arguments中存有[3,2]
function test(a,b){ b = 2; } test(1);
//先传值a为1 此时arguments中只存有[1] 然后b值为2 此时arguments中仍然为[1] 即arguments[1]为undefined
3 返回值return
有两个功能
1 函数执行到return终止
没写return的函数 系统默认会在结尾加return
如 function test(a,b){
console.log(‘a’);
return ;
console.log(‘b’);
}
//函数执行第一条语句后终止 console.log(‘b’);不执行
2 返回一个值