首页 > 应用开发 > > 再谈JavaScript的作用域
作用域作为最重要的概念之一,初学者往往会有一些疑惑,小编我从浅显处入手,可能更有助于对于概念的入门和深入理解。
作用域通俗的讲就是变量或者函数的“势力范围”,在此范围内,变量可以被引用,函数可以被调用。
JavaScript具有两种作用域:
(1)全局作用域。
(2)函数作用域。
特别说明:ES2015新增块级作用域。
函数中声明的变量是局部变量,当然必须使用var声明,否则也是一个全局变量,代码如下:
function func(){
var webName="小熊爱前端";
address="海岛市南区";
}
两个变量虽然都是在函数中声明,但webName是局部变量,address是全局变量,因为address没有用var声明,默认就当成全局变量,所以大家一定要养成好习惯,声明变量时候务必带上var。
全局变量在整个代码中都是可见的,局部变量仅能在声明变量的函数(包括嵌套在其中的函数)中使用。
再来看一段代码:
function func()
{
var webName="小熊爱前端";
function funcInner()
{
var target="分享互助";
}
}
变量webName可以在函数func和funcInner中应用,但变量target只能够在funcInner中使用。
实际上,全局变量是window对象的属性,"势力范围"是整个代码。
代码实例如下:
var antzone="分享互助"`;
function func(){
var webName="小熊爱前端";
}
console.log(window.antzone);
作用域链:
作用域链是查找一个变量的时候,一层一层的向上形成的查找轨迹,类似于一个链子一样。
代码实例如下:
var antzone="小熊爱前端"`;
function box()
{
var a="box函数";
function middle()
{
var b="middle函数";
function inner()
{
console.log(antzone);
}
inner();
}
middle();
}
box();
将要打印antzone时,首先会在当前inner函数作用域中查找,没有找到,则向上在middle函数作用域中查找,没有查找到,再向上在box中查找。依然没有查找到,最后在全局作用域中查找,这样就形成作用域链效果。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/835/viewspace-3131913/ ,如需转载,请注明出处,否则将追究法律责任。