Day07 JavaScript 笔记
1函数
1.1 变量提升
① 变量提升
JavaScript 中会把变量提升到本作用域的最前面。只提升了变量的声明,没有提升变量的赋值。在正式执行代码之前,变量就已经提升了,正式执行到声明函数语句的时候,仅仅是进行了赋值操作。
② 函数提升
**function 关键字方式创建的函数:**不但会提升函数的声明,连同函数一起提升到作用域的最前面,当正式代码执行到函数声明语句,直接跳过。
**表达式方式与Function 构造函数方式创建的函数:**与变量的提升规则一致!
1.2 匿名函数
匿名函数就是没有名字的函数;匿名函数其实就是用直接量方式表示函数。
匿名函数通常作为自调用函数和回调函数使用。
1.3 自调用函数
简称IIFE, 英文全称 Immediately Invoked Function Expression。
自调用函数也叫立即调用函数,函数声明完立即被调用了。
自调用函数通常会使用匿名函数。
自调用函数的意义:产生作用域,避免全局变量污染。
// 匿名的自调用函数
(function() {
})();
// 有名字的自调用函数
(function fn() {
})();
// 自调用函数设置参数
(function(name, address) {
console.log(name + '住在' + address);
})('大悲', '马路上');
**注意:**连续写多个自调用函数的时候,可能出现执行错误,需要写完一个自调用函数之后用分号结束,或者在自调用函数的前面任意写一个一元运算符。
1.4 回调函数
① 什么是回调函数
满足一下三个条件的函数称为回调函数:
1、函数是我定义的
2、我没有调用函数(没有直接调用)
3、函数被执行了
**注意:**回调函数的形式大部分都是作为其他函数的参数。
② 回调函数的使用场景
1、DOM 事件的回调函数
2、定时器的回调函数
3、Ajax 的回调函数
4、声明周期的钩子函数
5、其他需要回调函数作为参数的系统参数(方法)
1.5 递归函数
① 递归函数:
函数内部可以调用自己,称之为函数的递归调用,这种函数叫做递归函数。
② 递归函数成功的条件
1、要有结束递归的条件。
2、随着递归调用次数的增加,应该越来越趋近于递归结束的条件。
③ 递归函数的缺点
1、递归函数调用很容易发生灾难(内存泄漏)而调用失败。
2、函数递归调用效率不高,能不用就不用。
④ 递归函数应用场景
后端场景:目录的删除、复制、移动等操作。
前端场景:处理从后端获取的 json 数据。