javascript复习-day09
思维导图:
笔记:
1.js作用域就是代码名字(变量)在某个范围内起作用和效果。
目的是提高程序的可靠性,更重要的是减少命名冲突。
2.js的作用域(es6之前):a.全局作用域 b.局部作用域
全局作用域:整个script标签或者是一个单独的js文件
局部作用域(函数作用域):在函数内部就是局部作用域,这个代码的名字只在函数内部起效果和作用。
3.变量的作用域:根据作用域的不同,变量分为全局变量和局部变量。
1)全局变量:在全局作用域下的变量,在全局下都可以使用
注:如果在函数内部,没有声明直接赋值的变量也属于全局变量。
2)局部变量:在局部作用域下的变量
注:函数的形参也可以看作是局部变量
4.从执行效率来看全局变量和局部变量
1)全局变量:只有浏览器关闭的时候才会销毁,比较占内存资源
2)局部变量:当程序执行完毕就会销毁,比较节约内存资源。
5.js在es6的时候新增了块级作用域。块级作用域{}。
6.作用域链【就近原则】:内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构,我们称为作用域链。
7.js引擎运行js分为两步:
a.预解析
把js里面所有的var和function提升到当前作用域的最前面
b.代码执行
按照代码书写的顺序从上往下执行。
8.预解析分为
a.变量预解析(变量提升)
把所有的变量声明提升到当前作用域的最前面,不提升赋值操作。
b.函数预解析(函数提升)
把所有的函数声明提升到当前作用域的最前面,不调用函数。
注意点:函数表达式的调用必须写在函数表达式的下面。
9.函数内部,未用var声明,仅赋值的变量属于全局变量。
10.对象:一个具体的事物。
11.创建对象
1)利用对象字面量创建对象
2)利用new Object创建对象
3)利用构造函数创建对象
构造函数就是把对象里面一些相同的属性和方法抽象出来封装到函数里面。
12.变量、属性、函数、方法区别
a.变量和属性的区别
1)变量和属性的相同点:都是用来存储数据的
2)变量单独声明并赋值,使用的时候直接写变量名,单独存在
3)属性在对象里面的不需要声明,使用的时候必须是对象.属性
b.函数和方法的区别
1)函数和方法的相同点:实现某种功能,做某件事
2)函数是单独声明,并且调用,函数名()单独存在
3)方法在对象里面,调用的时候,使用对象.方法()