函数
- 函数的作用是什么?
- 高内聚,低耦合 -> 模块的单一责任制
- 解耦合 -> 用函数能很好的解耦合
函数声明
function test(参数){
函数的执行语句;
}
// 表达式 字面量
// 声明一个test的变量,把函数赋值给这个变量
// test1只能在函数内部调用,外部是不可见的
// 当用表达式定义函数的时候,叫做匿名函数(后面的函数没用名字)
var test = function test1(){
console.log(1);
};
function one(){
console.log("我是个很牛的函数");
};
one();
one();
// 函数只有被调用的时候才会执行。
函数的组成部分
function 函数名 参数(可选)返回值()return
参数
- 参数有点像是函数内部声明的变量,但是只是声明没有被赋值。
- 形参和实参的数量可以不相等
// 不调用就是形式上占位用的 -- 形参
function test(a,b){
// 相当于定义了 var a,b 但是不赋值
console.log(a + b);
}
// 实际参数 -- 实参
test(10,20);
// arguments
function test(){
var i = 0;
for(var a = 0; a < arguments.length; a++) {
i += arguments[a];
}
console.log(i);
}
test(1,2,3,4);
function test(a,b){
a = 3;
// 可以改变实参
// 但是a 和 arguments[0] 不是一个
// a 是栈内存
// arguments[0] 是堆内存 ,村的 【1,2】数组,在栈内存存储一个地址,给一个指针
console.log(arguments[0]);// 3
}
test(1,2);
function test(a,b){
b = 3;
// 实参没有传值 改变不了
console.log(arguments[1]);// undefined
}b
test(1);
- 实参和形参会产生一种映射的关系,实参和形参不是同一个量,是存放在不同地方的,系统的设置是有映射关系的无论你的实参怎么赋值,你的形参都会跟着变,但是一定是形参里面有对应的值才行,如果没定义的值没有用,会是undefined。
return的问题
- 返回一个实际的值,或者变量
- 终止函数执行,如果自己不写,会隐式添加
function test(){
return 10;
}
console.log(test()); // 10
function tst(name){
return name || "没有值";
}
console.log(tst());