前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS执行上下文/作用域/闭包

JS执行上下文/作用域/闭包

作者头像
杨肆月
发布2019-08-20 16:12:11
1.3K0
发布2019-08-20 16:12:11
举报
文章被收录于专栏:全栈开发之路

一、执行上下文

  • 单线程
  • 同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
  • 全局上下文只有唯一的一个,它在浏览器关闭时出栈
  • 函数的执行上下文的个数没有限制
  • 每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。 例:
代码语言:javascript
复制
var color = 'blue';
 
function changeColor() {
    var anotherColor = 'red';
 
    function swapColors() {
        var tempColor = anotherColor;
        anotherColor = color;
        color = tempColor;
    }
 
    swapColors();
}
 
changeColor();

二、作用域

1、变量作用域

  • 全局变量:在全局声明的变量,任何地方都可以访问
  • 局部变量:在函数里声明的变量,只有函数里内访问

——几个注意点:

1)声明局部变量必须用var,不然会污染全局变量

代码语言:javascript
复制
scope = "gobale";
function checkscope() {
      scope = "local";
}
 checkscope();
console.log(scope); //"local"

2)一般来说内部能访问外部,外部不能访问内部。 那么怎么让外部也能访问内部? —— return

2、函数作用域

js没有块级作用域,而有函数作用域。 函数作用域是指:在函数内声明的所有变量在函数体内是始终可见的。


三、闭包

什么是闭包

参考:学习Javascript闭包(Closure)——阮一峰

  • 有权访问另一个函数作用域中的变量的函数
  • 定义在一个函数内部的函数
代码语言:javascript
复制
  function f1(){
    var n=999;
    function f2(){
      alert(n); 
    }
    return f2;
  }
  var result=f1();
  result(); // 999

f2()就是闭包

闭包的作用


四、this

  • 全局函数里,this 等于window
  • 函数被作为某个对象的方法调用时,this等于那个对象
  • 匿名函数执行环境具有全局性,this指向window (可以通过call()或apply()改变函数执行环境)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、执行上下文
  • 二、作用域
    • 1、变量作用域
      • 2、函数作用域
      • 三、闭包
        • 什么是闭包
          • 闭包的作用
          • 四、this
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档