当前位置: 首页 > news >正文

JavaScript高级程序设计读书分享之4章——4.2执行上下文与作用域

JavaScript高级程序设计(第4版)读书分享笔记记录

适用于刚入门前端的同志

 执行上下文

变量或函数的上下文决定 了它们可以访问哪些数据,以及它们的行为。
在浏览器中,全局上下文就是我们常说的 window 对象(第 12 章会详细介绍),因此所有通过 var 定义的全局变量和函数都会成为 window 对象的属性和方法
示例:
var color = "blue"; 
function changeColor() { let anotherColor = "red"; function swapColors() { let tempColor = anotherColor; anotherColor = color; color = tempColor; // 这里可以访问 color、anotherColor 和 tempColor } // 这里可以访问 color 和 anotherColor,但访问不到 tempColor swapColors(); 
} 
// 这里只能访问 color 
changeColor();
以上代码涉及 3 个上下文:
全局上下文changeColor()的局部上下文swapColors()的局部上下文

 

  • 内部上下文可以通过作用域链访问外部上下文中的一切,但外部上下文无法访问内部上下文中的任何东西。
  • 每个上下文都可以到上一级上下文中去搜索变量和函数,但任何上下文都不能到下一级上下文中去搜索

变量声明

使用 var 的函数作用域声明

  • 在使用 var 声明变量时,变量会被自动添加到最接近的上下文。
  • var 声明会被拿到函数或全局作用域的顶部,位于作用域中所有代码之前——‘变量提升’

使用 let 的块级作用域声明

  • ES6 新增的 let 关键字跟 var 很相似,但它的作用域是块级的,这也是 JavaScript 中的新概念
  • 块级作用域由最近的一对包含花括号{}界定
  • if 块、while 块、function 块,甚至连单独 的块也是 let 声明变量的作用域
let var 的另一个不同之处是在同一作用域内不能声明两次。重复的 var 声明会被忽略,而重复的 let 声明会抛出 SyntaxError
http://www.lryc.cn/news/15141.html

相关文章:

  • 函数的定义与声明
  • C#部署非安装版(绿色版)mysql
  • 【RecBole-GNN/源码】RecBole-GNN中lightGCN源码解析
  • 基于UIAutomation+Python+Unittest+Beautifulreport的WindowsGUI自动化测试框架common目录解析
  • c++提高篇——queque容器
  • MyBatis-XML映射文件详解
  • 基于Java+SpringBoot+Vue+Uniapp前后端分离健身预约系统设计与实现
  • webstom找不到vue全局组件
  • ESP32设备驱动-内置霍尔磁力传感器数据读取
  • 2023面试准备之--mysql
  • yolov5源码解读--训练策略
  • 基于Django的员工管理系统
  • 企业数智化转型在即,看看低代码软件公司如何做!
  • 如何将pdf版的文书文字提取出来?
  • 设计模式——工厂模式
  • PCB设计中降低噪声与电磁干扰的24个窍门
  • 设计模式浅谈
  • 【kubernetes】使用crictl对k8s节点进行调试
  • 数字经济讨论题
  • gcc/g++、动静态库、make/makefile
  • 北京博奥智源,浅谈图书馆的馆情展示系统细则
  • Docker----------day-mysql8主从复制
  • 【Nginx】【一】Nginx简介
  • 跳跃游戏II-力扣45-java 动态规划
  • 【算法】用python代码解决“鬼谷问徒”问题
  • 【1】linux命令每日分享——mkdir创建目录
  • TPM 2.0实例探索1
  • buu [BJDCTF2020]signin 1
  • Storage
  • CAS底层原理及ABA问题