做用域定义了变量或者函数可有权访问的范围。前端
外部环境不能访问内部环境的任何变量与函数。函数
在 JavaScript 中,每一个函数都有着本身的做用域,在每次调用一个函数的时候 ,就会进入一个函数内的做用域,而当函数执行返回之后,就返回调用前的做用域。spa
当代码在一个做用域内执行时,就会根据其上下文建立一个做用域链,该做用域链的用途就是控制当前做用域对于内全部的变量与函数的有序访问。做用域链的最前端,始终都是当前执行代码所在的做用域的变量对象。code
JavaScript中的函数运行在它们被定义的做用域里,而不是它们被执行的做用域里对象
var name = 'jim'; function showName(){ console.log(name); } function show(){ var name = 'tom'; showName(); } show(); // 输出结果为jim
对上式变式blog
var name = 'jim'; function show(){ var name = 'tom'; function showName(){ console.log(name); } showName(); } show(); // 输出结果为tom