苏州建设招聘信息网站,找国外公司做网站,网站备案ftp密码,做网站必须要推广吗JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 执行上下文 变量或函数的上下文决定 了它们可以访问哪些数据#xff0c;以及它们的行为。在浏览器中#xff0c;全局上下文就是我们常说的 window 对象#xff08;第 12 章会详细介绍#xff09;以及它们的行为。在浏览器中全局上下文就是我们常说的 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。