美文网首页
JS与块作用域

JS与块作用域

作者: xiaoguo16 | 来源:发表于2017-08-22 10:34 被阅读0次

    JS中没有块作用域的概念,所以下列的代码中的i可以在全局环境中访问,但这样会有一个弊端:污染了全局环境,因为在大型工程中,有可能会导致变量冲突。

    for(var i=0;i<5;i++){
        console.log(i)
    }
    

    但是JS中仍然有一些语句可以实现块作用域的功能:

    JS中块作用域效果的实现:

    • with
    var obj={
        a:4,
        b:5
    };
    with(obj){
        a=5;
        b=4;
    }
    console.log(obj);
    
    • try/catch
      try/catch中的catch分句会创建一个块作用域:
    try{
        
    }catch (err){
        console.log(err)
    }
    

    上述代码中的err只可以在catch分句中访问

    • let/const
      ES6中加入了两个声明变量的方式,let和const,这两种方式所声明的变量会绑定到所在的任意作用域中,通常是{...}的内部,二者区别:let声明的变量可修改,const不可修改。
    • IIFE
      立即执行函数也可以达到将变量封装在函数作用域中的作用,防止污染全局环境:
    (function () {
        for(var i=0;i<5;i++){
            console.log(i)
        } 
    })()
    

    相关文章

      网友评论

          本文标题:JS与块作用域

          本文链接:https://www.haomeiwen.com/subject/ydpkdxtx.html