ITPub博客

首页 > 应用开发 > > 再谈JavaScript的作用域

再谈JavaScript的作用域

作者:wyvernw 时间:2019-10-28 10:14:35 0 删除 编辑

作用域作为最重要的概念之一,初学者往往会有一些疑惑,小编我从浅显处入手,可能更有助于对于概念的入门和深入理解。

作用域通俗的讲就是变量或者函数的“势力范围”,在此范围内,变量可以被引用,函数可以被调用。

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    128
  • 访问量
    1296