全局作用域:全局变量
es5:在function与object中生成作用域
es6:在所有带{}中生成作用域:
function(){} if(){} for(){} while(){}
自由变量:在当前作用域调用了当前作用域不存在的变量(逐级寻找)//就近原则
顶级作用域:一级作用域
常见的作用域场景:
全局作用域
局部作用域:块级作用域 es5不支持块级作用域
es6 块级作用域
var:
1、定义变量支持重复定义
2、导致变量提升
3、不支持块级作用域
let:
1、变量无法重复定义
2、阻止变量提升
3、支持块级作用域
声明常量(存储数据):
const(一旦赋值,无法变更)//大驼峰命名
const Navber = "<div></div>" console.log
<script> //顶级作用域(父作用域) var x = ""//全局变量 function fn(){ //局部作用域:二级作用域(子作用域) var a = 123;//局部变量 function aa(){ //局部作用域:三级作用域(子作用域) } } </script>
子作用域获取父级作用域的全部代码段
父作用域无法读取子作用域的代码段
作用域链:scope chain
用来描述作用域与子作用域之间的关系