函数
函数声明
这个函数声明与C,C++还有不同呢,所以有必要再学习一下
第一种
function box (参数){
// 内容
};
第二种,下面函数的名字为test
var box = function test(参数){
// 内容
}
// 在浏览器console上输出 box.name --> test
第三种
var box = function (参数){
//内容
}
// 在浏览器console上输出 box.name --> box
//函数执行
box();
参数
形参与实参都已经了解,有一个不定参数不同,不定参数的个数是可以改变的
// 不定参数 例子一
function test2(a){
// a 就等于1
// 2,3不用管
// 隐式的方法arguments[1,2,3]实参列表
// 找到多余的实际参数
}
test2(1,2,3); //执行tset2之后(1,2,3)作为参数传进去
//只是把1传进去了,2,3没有
// 不定参数 例子二
function test3(a,b,c,d){
// a 等于1
// b 等于2
// c 等于3
// d 等于undefined
找到形参的长度sum.length
}
test3(1,2,3); // 执行tset3之后(1,2,3)作为参数传进去
另一个例子,也是不定参数的好处
var result = 0;
function sum(){
for(var i = 0; i<arguments.length;){
result += arguments[i];
i++;
}
console.log(result);
}
sum(1,2,3,4,5,6,7,8,9);
这个程序看了一会不是很明白,就跑了一下,加红框的的是为了看那个值怎么改变的
结果是这样的,arguments.length为参数的长度, arguments[i]为哪一个参数和数组的感觉差不多,45是算出的结果,所以不定参数,最大的好处就是不用固定参数的个数
JS的映射
function sum(a,b){
a = 2;
console.log(arguments[0]); // 打印出2,参数a改变了
}
sum(1,2);
function sum(a,b){
a = 2;
arguments[0] = 3
console.log(arguments[0]); // 打印出3,参数a改变了,可以相互改变
}
sum(1,2);
function sum(a,b){
//arguments[1]没值
b = 2;
console.log(arguments[1]);
}
sum(1);
结果真是出任意料呢,没有·向b的位置传参即使给b赋值其也是没有值的
- 实参列表传进来的时候他就有几个,就算我让b等于2,它也不会往 arguments 里面加了。
- 函数根本就没有,这个时候 b 就当一个变量用了。 b 实参不映射,因为形参比实参多了一位
- b,只有他们相等的时候他们才会有映射的规则,不相等的时候,形参多了他不对应实参了,他们之间不映射。
但是读了好长时间还有点懵,又找了一些资料显示,调用函数有几个实参就有几个,实参有值,才会映射,只要改变就会随之变化,而没值就不会变化
结束条件加返回值return
结束函数,如果没有写,系统默认自带return
把值返回到函数外部
预编译
顺便提一嘴预编译,这个了解过,但是害怕自己忘把链接加在这把
预编译执行过程
作用域
还有作用域(https://www.yuque.com/fe9/basic/zd0d1h)
参考资料
ES5入门就先到这了,下面是ES6的入门啦!