作用域
作用域:作用域就是代码的执行环境,
通常来说一段程序代码中,代码名字(变量)在某个范围内起作用和效果,作用域的使用提高了程序逻辑的局限性增强了程序的可靠性,减少了名字的冲突
-
javascript的两种作用域:
全局作用域:在整个script标签,都能使用
局部作用域:这个代码的名字只在函数内部起效果和作用 -
变量的作用域:
全局变量:在全局作用域下用var声明的变量,在i全局下都可以使用 注意:如果在函数内部没有声明直接赋值的变量也属于全局变量
局部变量:在函数内部声明的变量,在局部作用域下的变量 注意:函数的形参也可以是局部变量
区别:全局变量在任何一个地方都可交易使用,只有在浏览器关闭的时候才会被销毁,因此比较占内存,局部变量只有在函数内部使用当其所在的代码快被执行时,才会被初始化,当代码快运行结束后,就会被销毁,因此更节省内存空间 -
作用域链
什么是作用域链?
就是,根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问。
原型链是用于查找引用类型的属性,查找属性会沿着原型链依次进行,如果找到该属性会停止搜索并做相应的操作,否则将会沿着原型链依次查找直到结尾。
作用域链的作用主要用于查找标识符,当作用域需要查询变量的时候会沿着作用域链依次查找,如果找到标识符就会停止搜索,否则将会沿着作用域链依次向后查找,直到作用域链的结尾。