JavaScript作用域个人理解

说起作用域,这世界上的编程语言中有两种工作模型。一种是最为普遍的词法作用域,绝大多数的编程语言都使用该模型。另一种是动态作用域,比如Bash脚本中就使用动态作用域。而我们的JavaScript毫不例外的,用了词法作用域。

词法作用域

简单的说,词法作用域就是定义在词法阶段的作用域。通俗的讲,你写JS时相应的决定作用域的代码写在了哪儿,作用域就在哪儿诞生且一般不会改变。就比如你写了一函数,就会产生一个函数作用域,函数中定义的变量只在函数中生效。
JS的作用域普遍来讲分为两类:**函数作用域**和**块级作用域**

函数作用域

函数是JavaScript中最常见的作用域单元。本质上,声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来,这是有意为之的良好软件设计原则。
    一般来说,对于一名初学者,函数作用域就是他的全部了。

块级作用域

块级作用域可能是JavaScript被其他语言的拥趸们诟病的一点。从ES3开始才存在块级作用域。而且是try/catch结构中catch分句出现的块级作用域。
这明显远远不够。直到ES6,出现了万众瞩目的let关键字:用以在任意代码块中声明变量。
除了let之外,ES6还引入了const,同样可以创建块级作用域。其值为固定的常量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章