1.变量与常量的区别
①变量和常量的命名关键字不同
let name (变量关键字是let)
const AGE(常量的关键字是const)
②变量的值可以更新,但是常量是无法改变的
let name = “张三”;
name = “李四”;
console.log(name);
const AGE = 18
const AGE = 20
console.log(AGE)
打印出来的变量值是李四,常量是无法改变的,打印出来AGE依然是18
2.函数和匿名函数的区别
①函数和匿名函数的写法不同,书写时匿名函数没有名字
函数的写法 funtion name(){}
匿名函数的写法 funtion(){}
②函数有声明提前的规则,匿名函数一般配合变量使用,不会声明提前
console.log(name());
function name(){
return “张三”;
}
可以打印出来name
console.log(name());
let name = function(){
return “张三”;
};
会出现打印错误
3.箭头函数的参数特征
①箭头函数只能用来简化匿名函数的声明,可以去掉关键词function
let name = (a,b) => {return a+b;};
②如果函数体只有一条语句,可以省略return 和 花括号
let name = (a,b) => a+b;
② 如果箭头参数只有一个,可以去掉小括号
let name = a => a;
③如果箭头没有形参,不能省略括号
let name =() => console.log(“名字”);
4.闭包原理与实现
闭包指的是在函数中调用函数之外(父级、全局)变量的函数;某个函数,通过返回子函数(闭包)的方法实现私有变量的打印。
function name(){
let mingzi = "张三";
return function(){
return mingzi;
}
}
console.log(name()());
5、高阶函数
使用函数作为参数或者把一个函数作为返回值的函数
①回调函数
let daYin = () => alert(“你好”);
document.addEventListener(“click”,daYin);
②偏函数
let sum = (a,b) => {
return function(c,d,e){
return a + b +c + d + e;
}
};
let sum1 =sum(4,5);
console.log(sum1(7,8 ,9));
③柯里化
let sum = (a) => {
return (b) => {
return(c) => {
return(d) => {
return a+b+c+d;
};
};
};
};
let jieGuo = sum(1)(3)(5)(7);
console.log(jieGuo);
④纯函数
let jianFa = (a,b) => a - b;
console.log(jianFa(5,4));
⑤回调函数和纯函数的区别
回调函数的范围更大,纯函数如果被调用就会成为回调函数。