js函数中的大括号是什么意思,作用域吗,怎么解释呀?

看到js有这样的写法,不知道这个大括号的用意:

  function run(){
    {
      alert(1);
    }
 }

我其实是不太理解他只是在大括号中执行了一个方法,这种写法和变量的作用域有什么关系。

阅读 7.7k
6 个回答

代码块,有两种不同的含义

  • es6之后的块级作用域,上面很多答案都说了
  • 用作代码分割,纯粹代码维护上的需求,比如一个函数内需要做两个事,这两件事完全没有关系,这样可以分开,或者其中一些代码不在主流程中,比如需要记录一个日志,将他用{}包起来,让代码阅读起来更简单轻快一点,在梳理流程的时候,不需要关心这个分支任务。

    {
        do something...
    }
    {
        do something...
    }
    
    do something...

我说一下另一种情况
例如vue源码用的rollup

if ('development' !== 'production') {
    alert(1)
}

编译之后:

{
    alert(1)
}

ES6增加了块级作用域
块级作用域内的变量也无法在块级作用域之外访问,var声明符不识别块级作用域,也就是说

{
    var a = 1;
}

不是一个块级作用域,但是let,const可以识别块级作用域

楼主的问题上面都说很多就不说了。
说说关于语法是什么意思,要怎么解释之类的问题。
直接在线生成AST就什么都知道了。
astexplorer

在ES6中你可以把大括号理解为块级作用域,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题