
js函数
1、JavaScript 函数
1-1 声明函数的方式
- function 关键字
- 匿名函数方式(表达式方式)
-
1-2 参数问题
形参和实参数量问题
- 可选形参(参数默认值)
- 可变长的实参列表:实参对象 aruguments
1-3 回调函数
一个函数就可以接收另一个函数作为参数,这种函数就称之为回调函数(高阶函数)function add(x, y, f) {return f(x) + f(y);}add(-5, 6, Math.abs)
1-4 递归函数
函数内部调用自己就是递归函数,//用递归 实现阶乘function multiply(n) {if (n == 1) {return 1}return n * multiply(n - 1)}
1-5 自调函数
函数生声明完 直接调用(function(){console.log('ok')})()
1-6 闭包函数
当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,形成闭包 ```json function count() { var arr = []; for (var i=1; i<=3; i++) {
} return arr; }arr.push((function (n) {return function () {return n * n;}})(i));
var results = count(); var f1 = results[0]; var f2 = results[1]; var f3 = results[2];
f1(); // 1 f2(); // 4 f3(); // 9
<a name="eKkSG"></a>## 2、JavaScript 作用域<a name="5AB34"></a>### 2-1 局部作用域函数中使用定义的变量就是局部变量,只能在本函数中使用<a name="knRsn"></a>### 2-2 全局作用域在,函数外面,定义的变量是全局变量。哪都可以用<br />**变量提升**```jsonvar a = 100function demo(){console.log(a)var a = 200}
2-3 作用域链
函数嵌套函数会形成作用域链
function demo(){function fn(){function fn1() {}}}
2-4 块状作用域(ES6)
使用let关键字声明的变量会具有块状作用域
for (let i = 0; i < 10; i ++) {}console.log(i) //变量不存在 Uncaught ReferenceError: i is not defined
