Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:总结的不错, 继续加油
// * 2. 变量 let
// 声明 + 初始化(第1次赋值)
// let a
// a = 100
let a = 100
console.log('a =', a)
// 更新(第2次及以上的赋值)
a = 200
console.log('a =', a)
// * 3. 常量 const
const USER_NAME = '张三'
console.log('USER_NAME =', USER_NAME)
// 常量禁止更新
/**
* var 三大硬伤
* 1. 声明提升: 未声明可使用
* 2. 重复声明: 声明式更新很奇葩
* 3. 变量泄露: 不支持代码块
*/
// ! 函数
// * 1. 命名函数
// 调用: 声明前,成功了,说明函数声明提升到了代码顶部
console.log(sum1(3, 4))
// 声明
function sum1(a, b) {
return 'a + b = ' + (a + b)
}
// 调用: 声明后
console.log(sum1(1, 2))
console.log('-------------')
// ? 必须遵循"先声明,后使用"原则,声明提升违背了该原则
// * 2. 匿名函数
// const ,let 没有声明提升的效果
// console.log(sum2(7, 8))
const sum2 = function (a, b) {
return 'a + b = ' + (a + b)
}
console.log(sum2(5, 6))
console.log('-------------')
// 以后, 首选匿名函数
// * 3. 箭头函数
// 匿名函数的语法糖(简化)
// 语法: 删除function, (...)=>{...}
let sum3 = (a, b) => {
return 'a + b = ' + (a + b)
}
console.log(sum3(9, 10))
// 只有一条return ,可不写 {...}
sum3 = (a, b) => 'a + b = ' + (a + b)
console.log(sum3(10, 11))
// 只有一个参数, (...)也可不写
sum3 = username => 'Hello, ' + username
console.log(sum3('朱老师'))
// 没有参数, (...)必须写
sum3 = () => 'Hello, 王老师'
// _ 也是一个合法变量标识符
// sum3 = _ => 'Hello, 王老师'
console.log(sum3())
console.log('-------------')
// ! 箭头函数与匿名函数的最大区别: 没有自己的this
// * 4. 立即执行函数 (IIFE)
// 一个语法,用 (...) 包住 就转为"表达式"
let res = (function (a, b) {
return 'a + b = ' + (a + b)
})(60, 30)
console.log(res)
/**
* * 1. 命名函数: 标识符
* * 2. 匿名函数: 变量/常量
* * 3. 箭头函数: 匿名函数语法糖
* * 4. IIFE: 一次性,常用作模块或封装
*/