1. 实例演示变量与常量的区别
// 1.变量:禁止重复命名,可以被更新(命名时用小驼峰命名)
// 声明
let userName;
console.log(userName);
// 声明并初始化(第一次赋值)
let itemName = "时尚";
console.log(itemName);
// 更新
userName = "小小";
console.log(userName);
// 2.常量:声明时必须初始化,声明后不能被更新和删除(常量命名时一般用大写)
const ID = 123;
console.log(ID);
2. 函数与匿名函数的区别
// 函数
function getName(name) {
return "Welcome to" + name;
};
console.log(getName("天猫"));
// 匿名函数:没有函数名的函数(可以解决函数声明提升)
// console.log(sum(1, 2));
let sum = function(a, b) {
return a + b;
};
console.log(sum(1, 2));
3. 箭头函数的参数特征
let sum = function (a, b) {
return a + b;
};
// 用箭头函数简写(箭头函数只能用来匿名函数声明)
sum = (a, b) => {
return a + b;
};
console.log(sum(3, 4));
// 如果函数只有一条语句可以不写return
sum = (a, b) => a + b;
console.log(sum(32, 42));
// 如果只有一个参数小括号可以不用
let tips = str => console.log(str);
tips("欢迎大家");
// 如果没有参数,小括号不能省略
tips = () => console.log("success");
console.log(tips("欢迎大家"));
4. 闭包原理与实现并演示它
// 闭包
// 自由变量: 即不是函数参数变量也不是私有变量,存在于函数调用上下文中
// 闭包: 能够访问自由变量的函数,所以理论上讲,任何函数都是闭包
let num = 100;
function add(a, b) {
// a,b是参数变量
// c是私有变量
// num是自由变量
let c = 3;
return a + b + c + num;
};
console.log(add(2, 3));
function f() {
let n = 100;
// 这个返回的子函数就是闭包
return function () {
return n;
};
};
// console.log(n);
console.log(f()());
function f1() {
let a = 1;
// a 相对于f1是私有变量,但是相对于返回的匿名函数就是一个自由变量
return function () {
return a++;
};
};
let f2 = f1();
console.log(f2());
5. 四种高阶函数
// 1. 回调函数
document.addEventListener("click", function() {
alert("Hello Word");
})
// 2.偏函数
let sum = function(a, b) {
return function(c, d) {
return a + b + c + d;
};
};
let f1 = sum(1, 2);
console.log(f1(3, 4));
// 3.柯里化
sum = function(a) {
return function(b) {
return function(c) {
return function(d) {
return a + b + c + d;
};
};
};
};
let res = sum(1)(2)(3)(4);
console.log(res);
// 4.纯函数
function add(a, b) {
console.log(a + b);
}
add(3, 3);