温习日志
——2023年1月29日下午
学习内容
- 默认参数
- 在ES5时,当检验函数中参数是否添加,并且添加默认值,需要用到
||
- 在ES6只需在函数中的参数直接等于默认参数,当调用时没有给参数则使用默认值,如:
function(a = 1, b = 2) {}
- 对于给对象赋值时,若是键与参数相同写一遍即可,如:
const obj = {name};
- 对于参数的赋值:基本类型赋值,参数修改,原来的基本类型不变、引用数据类型赋值参数,如果参数修改内部内容,改引用数据类型也修改
- 在ES5时,当检验函数中参数是否添加,并且添加默认值,需要用到
- 初阶和高阶函数
- 函数也是对象
- 可以通过
fn.name
访问fn
函数的名字
- call和apply方法
- 在对象中存在函数方法,且函数方法中存在
this
。如果通过引用对象中方法直接调用,则this
指向这个对象;如果是首先引用该方法没有立即调用,则后续再使用this
指向undefined
- 通过
fn.call(指向的对象, 参数)
实现绑定这个fn
函数中的this
全部指向指定的对象,且call
后面接受多个作为函数的参数 - 通过
fn.apply(指向的对象, 数组)
实现绑定这个fn
函数中的this
全部指向指定的对象,且apply
后面接受一个数组作为函数的参数 call
和apply
方法都是立即调用的- 对于数组作为参数,
call
方法也可以使用,如:fn.call(null, ...arr);
- 在对象中存在函数方法,且函数方法中存在
- bind方法
- 通过
fn.bind(指向的对象, 参数)
实现绑定这个fn
函数中的this
全部指向指定的对象,且bind
后面接受多个作为函数的参数,最终返回这个函数不会立即执行
- 通过
- 练习1,详见于代码
- Immediately Invoked Function Expressions
- 通过
(fn() {})()
从而实现函数表达式的立即执行,里面的变量是不能被访问到的 - 我们也可以从函数A中返回新的函数B,则函数A中的变量只能通过函数B访问,这时候就形成了闭包
- 通过
- 闭包
- 闭包是函数执行上下文中的
- 外部不能访问到内部的变量,内部变量可以访问全局变量。但是,内部会优先访问闭包中的变量
- 练习2,详见于代码
明日计划
- 明天十一点半起床,十二点开始学习JS基础知识
- 学习至下午五点半
- 晚上六点半学习React知识
- 学习至八点半