一.变量作用域
作用域:就是一个变量可以生效的范围
变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域
全局作用域:全局作用域是最大的作用域,在全局作用域中定义的变量可以在任何地方使用,页面打开的时候,浏览器会自动给我们生成一个全局作用域window这个作用域会一直存在,直到页面关闭就销毁了
局部作用域:局部作用域就是在全局作用域下面又开辟出来的一个相对小一些的作用域在局部作用域中定义的变量只能在这个局部作用域内部使用,在JS中只有函数能生成一个局部作用域,别的都不行,每一个函数,都是一个局部作用域
二.变量使用规则
有了作用域以后,变量就有了使用范围,也就有了使用规则变量使用规则分为两种,访问规则和赋值规则。
访问规则:首先,在自己的作用域内部查找,如果有,就直接拿来使用
如果没有,就去上一级作用域查找,如果有,就拿来使用
如果没有,就继续去上—级作用域查找,依次类推
如果一直到全局作用域都没有这个变量,那么就会直接报错(该变量is not defined)
变量的访问规则也叫做作用域的查找机制作用域的查找机制只能是向上找,不能向下找
赋值规则:
先在自己作用域内部查找,有就直接赋值
没有就去上—级作用域内部查找,有就直接赋值
在没有再去上—级作用域查找,有就直接赋值
如果一直找到全局作用域都没有,那么就把这个变量定义为全局变量,在给他赋值
三.作用域链
变量访问或赋值时,先在自己的作用域查找
如果没找到,再一层一层向上查找,至到最外层全局作用域。这种层层查找关系,叫作用域链
四.递归函数
概念:函数定义好之后,不能自已执行,需要使用函数调用语句调用才会执行,函数调用语句一般写在函数体外面,但如果将函数调用语句写在函数体中,也就是在一个函数内部,调用自己,这种函数称为递归函数
死递归:上面递归函数—旦执行,会循环往复,没有止尽。需要给递归函数设置递归结束条件。不然就是一个没有尽头的递归函数,我们叫做死递归
运行原理:
递归实现:解决问题:后面的结果,是由前面推导的
五.简单了解对象
对象:数据类型–复杂数据类型Object
简单对象创建方式两种:
访问对象属性:
对象基本操作:添加属性,修改属性,查询访问属性值,delete obj.age
对象遍历for-in循环:for(key in obj){// key 属性 // obj[key] 属性值}