自调用函数
匿名函数不能通过直接调用来执行,因此可以通过匿名函数的自调用的方式来执行
函数是一种数据类型
因为函数也是一种类型,可以把函数作为两一个函数的参数,在两一个函数中调用 ,因为函数是一种类型,所以可以把函数可以作为返回值从函数内部返回
定义了一个函数,在调用的时候,不确定用户输入了多少个参数,不知道用户有没有输入参数,没有办法计算,
作用域
作用域:变量可以起作用的范围
全局变量和局部变量
全局变量:
在任何地方都可以访问到的变量就是全局变量,对应全局作用域
局部变量:
只在固定的代码片段内可访问到的变量,最常见的例如函数内部。对应局部作用域(函数作用域)
块级作用域
任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。
作用域链
只有函数可以制造作用域结构, 那么只要是代码,就至少有一个作用域, 即全局作用域。凡是代码中有函数,那么这个函数就构成另一个作用域。如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。
预解析过程:
①把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
②把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。
③先提升var,在提升function
JavaScript中的对象
JavaScript的对象是无序属性的集合。
其属性可以包含基本值、对象或函数。对象就是一组没有顺序的值。我们可以把JavaScript中的对象想象成键值对,其中值可以是数据和函数。
对象的行为和特征
特征---属性
行为---方法