快捷导航
蚂蚁部落 网站首页 前端教程 JS教程 查看内容

栏目导航

≡基础知识≡

≡操作符≡

≡语句≡

≡函数≡

≡面向对象≡

≡对象≡

≡事件≡

≡事件对象≡

≡操作DOM方法≡

≡操作DOM属性≡

≡操作table表格≡

≡操作select控件≡

≡操作cookie≡

≡浏览器对象模型≡

≡进阶≡

JavaScript 作用域

2017-8-7 11:23| 发布者: admin| 查看: 456| 评论: 0|来自: 蚂蚁部落

作用域用来规定变量或者函数的可访问范围,控制着变量与函数的可见性和生命周期。

JavaScript中具有两种作用域,全局作用域和函数作用域。

特别说明:ES2015新增块级作用域,具体可以参阅JavaScript 块级作用域一章节。

函数中声明的变量是局部变量,当然必须使用var声明,否则也是一个全局变量,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
function func(){
  var webName="蚂蚁部落";
  address="青岛市南区";
}

两个变量虽然都是在函数中声明,但webName是局部变量,address是全局变量。全局变量整个代码中都是可见的,但是局部变量仅能在声明变量的函数中使用(当然也包括函数中嵌套的函数中使用),再来看一段代码:

[JavaScript] 纯文本查看 复制代码运行代码
function func(){
  var webName="蚂蚁部落";
   
  function funcInner(){
    var target="分享互助";
  }
}

变量webName可以在函数func和funcInner中应用,但是变量target只能够在funcInner中使用。

全局变量是window对象的属性,代码如下:

[JavaScript] 纯文本查看 复制代码运行代码
var antzone="分享互助";
function func(){
  var webName="蚂蚁部落";
}
console.log(window.antzone);

作用域链:

作用域链是查找一个变量的时候,一层一层的向上查找形成的那个查找轨迹,类似于一个链子一样。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
var antzone="蚂蚁部落";
function box(){
  var a="box函数";
  function middle(){
    var b="middle函数";
    function inner(){
      console.log(antzone);
    }
    inner();
  }
  middle();
}
box();

将要输出antzone的时,首先会在当前作用域中查找,没有找到,则向上在middle作用域中查找,没有查找到,再向上在box中查找。依然没有查找到,最后在全局作用域中查找,这样就形成作用域链效果。

2

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (2 人)

最新评论

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-8-21 12:38 , Processed in 0.065631 second(s), 21 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

返回顶部