使用递归获取后代元素
作用域
什么是作用域
变量起作用的范围
什么是块级作用域
JS中没有块级作用域,使用代码块限定的作用域就是块级作用域
JS中的作用域叫做 词法作用域
词法作用域
在代码写好的时候,就能确定变量的作用域,这种作用域就是词法作用域
动态作用域.(是词法作用域就不可能是动态作用域)
在js当中,只有函数能创造作用域
1 | var num = 123; |
变量提升
JS代码的运行分两个阶段 预解析阶段 变量名和函数提升 将var声明的变量名和function开头的函数进行提升 提升到当前作用域的最上方 * 执行阶段
注意: 1.变量和函数同名的时候 只提升函数,忽略变量名 2.函数同名的时候 都提升,但是后面的函数会覆盖前面的函数 3.函数表达式,只会提升变量名,不会提后面的函数
4.变量提升只会将变量和函数提升到当前作用域的最上方
1 | funciton foo(){ |
5.变量提升是分块