一:函数作用域链(词法作用域链) js中没有动态作用域,只有词法作用域
函数内部声明的变量,只有通过传递参数才能互相使用,否则不行。函数内部声明的变量在AO内,不会影响全局GO中的变量,即使同名也不会影响。在函数内部可以使用全局变量,但是要注意执行顺序。如foo执行时是因为bar()调用 foo是在var a=30之上,所以在执行foo时,a预解析为undefined还没被赋值为10
此时打印 10 ,因为先执行a=10,在执行函数。
过程 :
预解析: GO{
foo:function(){}
bar:function(){}
a:undefined;--->10
}
执行:1.bar()
bar{
AO : a: undefined-->30
foo()}
foo :console.log(a) 没找到 a 故报undefined;
GO AO也叫:词法作用域链
二:
调用栈:嵌套调用,调用一切需要执行的函数。调用栈中的调用位置决定了this的绑定
称呼;
str叫字符串
ostr 叫字符串对象 对象才有属性与方法
包装对象:包装类将原始值包装成对象