函数
一、函数创建
函数格式:
function 函数名([参数]...){
// 函数体 ......
}
二、参数设置
本来以为和Java一样有函数重载这个东西,试了一下发现像 C++中的参数缺省一样;
只要同名函数调用,所有的重名函数都会被调用;
function A (a) {
console.log(a);
}
function A () {
console.log(1);
}
console.log(A());
console.log(A(a));
三、函数调用
函数的调用和Java C++ C语言都是一样调用
函数名(参数......);
四、作用域
局部变量:
一般变量定义,从变量定义 开始 到 最近的 } 结束;
全局变量:
var a = 0; // 显式定义全局变量
function A(){
b = 1; // 隐式定义全局变量
}
这里的 a 和 b 都是 全局变量
五、匿名函数
第一种 跟 Java相似,直接定义函数使用 ,我就不提了
第二种 var fn = function([参数]){};
调用:fn([参数]);
六、回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数
时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条
件进行响应。
举几个JavaScript典型函数:
find()
every()
some()
map()
还有 forEach() 、reduce()、reduceRight() 等
这里的小编写的一个 Demo:
// 移除和2 相等的元素,生成一个新数组
var arr = [1,2,3,4,2,5,6,2,7,2];
var a = arr.filter(removeTwo);
function removeTwo(num){
return num != 2;
}
console.log(a);
七、闭包函数
在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。运行时,一旦外部的 函数被执行,一个闭
包就形成了,闭包中包含了内部函数的代码,以及所需外部函数中的变量的引用。其中所引用的变量称作上值(upvalue)。
注意:
闭包一词经常和匿名函数混淆。这可能是因为两者经常同时使用,但是它们是不同的概念。
// Return a list of all books with at least 'threshold' copies sold.
function bestSellingBooks(threshold) {
return bookList.filter(
function (book) {
return book.sales >= threshold;
}
);
};