内容:1. 实例演示变量与常量的区别;2. 函数与匿名函数的区别 3. 箭头函数的参数特征 4. 闭包原理与实现并演示它5. 四种高阶函数,全部实例演示,并理解回调和纯函数是什么,写出你的答案
1.实例演示变量与常量的区别
- 变量:会变的量,可以多次更新(改变)。第一次赋值被称作初始化。
使用,let
。<script>
// 声明
let useName;
// 声明并初始化(第一次赋值)
let itmName = '手机';
console.log(useName);
// 更新
itmName = '电脑';
console.log(itmName);
</script>
- 常量:一个不变的变量。不能更新,所以声明时必须初始化。
使用,const
。const UNITPRICE = 3355;
- 小知识点。 标识符:不要用中文。 命名方案:推荐使用驼峰式,常量则全部用大写
2.函数与匿名函数的区别
1.调用在前的时候,匿名函数无法被调用,函数可以。
2.函数可以被改变,匿名函数不可以
<script>
// 可以改变
function getName(name) {
return "名字"+name
}
console.log(getName("张三"));
function getName(name) {
return "姓名"+name
}
console.log(getName("张三"));
// 匿名函数
const sum = function (a) {
return "无法改变"
}
</script>
3.箭头函数的参数特征
箭头函数是用来简化‘匿名函数’的声明。
// 简化前
let sum = function(a,b) {
return a + b;
};
// 简化后
sum = (a,b) => {
return a+b
};
console.log(sum(1,2));
如果函数体只有一条语句,可不写return
sum = (a,b) => a+b;
console.log(sum(2,4));
如果只有一个参数,连小括号都可以不用了let tips = str => console.log(str);
如果没有参数,小括号不能省略tips = () => console.log("Success");
1.箭头函数没有原型属性prototype,不能当构造函数用
2.箭头函数中的this,始终与它的上下文绑定
4.闭包原理与实现并演示它
闭包: 能够访问自由变量的函数,所以理论上讲,任何函数都是闭包
自由变量: 即不是函数参数变量也不是私有变量,存在于函数调用上下文中
function a() {
let n = 100;
// 这个返回的子函数就是闭包
return function () {
return n;
};
}
5.四种高阶函数,全部实例演示,并理解回调和纯函数是什么
- 高阶函数: 使用函数为参数或者将函数做为返回值的函数
- 1.回调函数
document.addEventListener("click", function () {
alert("Hello World~~");
});
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(10)(20)(30)(40);
console.log(res);
4.纯函数。完全独立于调用上下文,返回值只能受到传入的参数影响
// 不是纯函数,受Date影响
function getDate() {
return Date.now();
}
console.log(getDate());
// 是纯函数
function add(a, b) {
console.log(a + b);
}
add(1, 2);
- 回调函数和纯函数
回调函数是被作为一个实参传入到另外一个外部函数中,并且外部函数被调用。这个函数就被称为回调函数。
纯函数就顾名思义,函数中没有其他函数为函数体的函数,他的返回值只受传入的参数影响