JS函数
在JavaScript中,定义函数的方式如下:
function fun1(args) {
//函数体
}
或是
var fun1 = function(args){
//函数体
}
这两种方法都可以用来定义方法。
arguments
arguments是js函数自带的一个参数,可以拿到函数传入的所有实参,哪怕函数定义中没有对应的形参。
拿到参数的arguments是一个数组我们对 arguments进行数组操作。
function a1(a){
console.log(arguments[1]);
return a;
}
a1(1,2,3,4,5,6);
控制台输出:
再ES6下,还可以使用rest来获取多传入的实参:
function a1(a){
console.log(arguments[1]);
return a;
}
a1(1,2,3,4,5,6);
控制台输出:
js变量的作用域
js变量有自己的作用域,在函数中定义的变量,在函数外无法引用,我们把他叫做局部变量。
不在任何函数内定义的变量的是全局变量,全局变量可以被内部函数引用。
var b =33;
function fun1(){
var a =20;
return a+b;
}
console.log(a);//调用函数内变量a
控制台输出:
var b =33;
function fun1(){
var a =20;
return a+b;
}
console.log(fun1());//函数内调用变量b
控制台输出:
JS高阶函数
- map()
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.map(function(x){
return x * x;
})
console.log(newArr);
控制台输出:
可以看出,map函数把数组中每一个元素都拿出来执行了函数体的内容,然后组成了一个新的数组。
- reduce()
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.reduce(function(total,next){
return total + next;
})
console.log(newArr);
控制台输出:
执行过程是这样的,reduce方法里面需要传入两个参数,然后分别传入数组的第一和第二个参数,执行函数体的内容,将执行结果赋值给第一个参数,然后继续依次取出数组内容,放入第二个参数中传入,执行函数体。最后的结果是第一个参数,也就是代码中的total。reduce() 可以用来进行数组累加,累乘等操作。
- filter()
var arr = [1,2,3,4,5,6,7,8,9];
var newArr = arr.filter(function(x){
return x%2==0;
})
console.log(newArr);
控制台输出:
filter() 用于筛选出符合函数体的内容,即保留return值为true的值。
- sort()
var arr = [1,3,2,5,4,8,7,6,9];
var newArr = arr.sort();
console.log(newArr);
控制台输出:
用于给数组排序,按照编码顺序。
-
trim()
trim就是用来取出字符两边的空格 -
every()
var arr = [2,4,6,8,10];
var newArr = arr.every(function(x){
return x % 2 ==0;
});
console.log(newArr);
如果数组内所有元素经过函数体返回的都是true,则最后返回true,有一个为flase,则最后为flase。
- find()
find()方法用查找符合条件的第一个元素,如果找到了,返回这个元素,否则,返回undefined - findIndex()
与find()的不同是最终返回的是对应元素所在索引。 - forEach()
var arr = [2,4,6,8,10];
arr.forEach(function(x){
console.log(x);
});
本文参考:https://www.liaoxuefeng.com/wiki/1022910821149312/1023021053637728