白文学_20210115-白文学
知识点总结
3.8.6 嵌套函数和闭包
嵌套(内部)函数对其容器(外部)函数是私有的。它自身
也形成了一个闭包。一个闭包是一个可以自己拥有独立的环境与变量的表达式(通常是函数)。既然嵌套函数是一个闭包,就意味着一个嵌套函数可以”继承“容器函数的参数和变量。
- 内部函数只可以在外部函数中访问。
- 内部函数形成了一个闭包:它可以访问外部函数的参数和变量,但是外部函数却不能使用它的参数和变量。
3.8.6.1 闭包
闭包是 JavaScript 中最强大的特性之一。JavaScript 允许函数嵌套,并且内部函数可以访问定义在外部
函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。
3.8.7 2.6.7 函数参数
从ECMAScript 6开始,有两个新的类型的参数:默认参数,剩余参数
3.8.7.1 默认参数
在JavaScript中,函数参数的默认值是 undefined 。然而,在某些情况下设置不同的默认值是有用的。
3.8.7.2 剩余参数
剩余参数语法允许将不确定数量的参数表示为数组。在下面的例子中,使用剩余参数收集从第二个到最后参数。然后,我们将这个数组的每一个数与第一个参数相乘。
3.8.8 匿名函数
语法
var 变量名 = function(参数列表) {
函数体;
}
函数调用:
//匿名函数
var sayHi = function(name) {
alert("Hello, " + name);
};
//调用
sayHi("Tom");
3.8.9箭头函数
箭头函数表达式(也称胖箭头函数)相比函数表达式具有较短的语法并以词法的方式绑定 this 。箭头
函数总是匿名的
- 有两个因素会影响引入箭头函数:更简洁的函数和 this
3.8.9.2 this 的词法
在箭头函数出现之前,每一个新函数都重新定义了自己的 this 值(在构造函数中是一个新的对象;在严格模式下是未定义的;在作为“对象方法”调用的函数中指向这个对象;等等)
function Person() {
var self = this; // 有的人习惯用`that`而不是`self`,
// 无论你选择哪一种方式,请保持前后代码的一致性
self.age = 0;
setInterval(function growUp() {
// 以下语句可以实现预期的功能
self.age++;
}, 1000);
}
3.8.10预定义函数
NaN值 的产生:
当算术运算返回一个未定义的或无法表示的值时, NaN 就产生了。但是, NaN 并不一定用于表示
某些值超出表示范围的情况。将某些不能强制转换为数值的非数值转换为数值的时候,也会得到
NaN 。
例如,0 除以0会返回 NaN —— 但是其他数除以0则不会返回 NaN 。
心得体会
越来越多的学习感受就是这部分知识越来越硬,又陷入了学了也不会用的死循环。听说多练会变熟,在练中学,希望自己能够掌握这部分内容,能够学有所用。
点赞
评论留言