块级作用域

2021-04-22  本文已影响0人  乘风破浪的哥哥

全局作用域

浏览器有一个顶层的对象window,其属性和var的全局变量等价
如果是window的内置属性,输出为默认值,否则为undefined
如果用var设置了window的内置属性作为变量,则该属性会被覆盖,造成window的污染
Node.js环境无法识别window,因为不是基于浏览器的
EC6之前,为了防止变量污染,采用自我立即执行匿名函数的方式防止变量污染

(function(){
  var value = 10;
}());
  console.log(value)  // 报错value没有定义

块级作用域

EC6之前只有全局作用域函数作用域,并没有所谓的块级作用域
{ }两个花括号里面的区域,就是块级作用域,比如循环体条件体
{{{...}}}块级作用域支持嵌套,每一层都是封闭的,只作用于此层

函数定义

块级区域定义函数,在外部可以访问
块级区域,用let定义函数,在外部无法访问

{
    function fn(){
        console.log('块级函数fn')
    }

    let fnn = function(){
        console.log('块级函数fnn')
    }

    fn()  // 输出:块级函数fn
    fnn() // 输出:块级函数fnn
}

fn()  // 输出:块级函数fm
fnn() // 报错:函数fnn未定义
上一篇 下一篇

猜你喜欢

热点阅读