ES7 中 let 和 const 块级作用域

阅读时长 3 分钟读完

1. 什么是块级作用域

在 JavaScript 中,变量的作用域一般分为全局作用域和函数作用域。全局作用域中声明的变量的作用域是整个程序中的任何位置,而函数作用域中声明的变量只在该函数内部有作用。但是,如果在函数内部使用 var 关键字声明变量,该变量会被提升到该函数的作用域的顶部,也就是说在函数内部的任何位置都可以访问该变量。

ES6 引入了块级作用域的概念,块级作用域指的是一对花括号 {} 中的代码块所形成的作用域。使用 let 和 const 关键字声明的变量只在代码块内部有作用,出了这个代码块就不能再使用了。

2. let 关键字

使用 let 关键字声明的变量有以下几个特点:

  • 只在 let 命令所在的代码块内有效。
  • 不存在变量提升。这意味着在 let 命令声明之前,该变量是不能被使用的。
  • 不允许重复声明。在同一个代码块内不允许重复使用 let 命令声明同一个变量。

下面是一个使用 let 命令的例子:

在这个例子中,使用 let 关键字声明的变量 i 只在 for 循环代码块内有效,出了 for 循环代码块 i 就不能再被使用了。

在这个例子中,同一个代码块内不能重复使用 let 关键字声明同一个变量。

3. const 关键字

使用 const 关键字声明的变量有以下几个特点:

  • 只在 const 命令所在的代码块内有效。
  • 不存在变量提升。
  • 声明变量时必须进行初始化赋值,而且不能再次赋值。

下面是一个使用 const 命令的例子:

在这个例子中,使用 const 关键字声明的变量 PI 是一个常量,它的值不能被改变。如果再次赋值会抛出一个 TypeError 错误。

4. 总结

使用 let 和 const 关键字可以声明块级作用域的变量,让我们的程序更加规范和清晰。在使用 let 和 const 关键字时需要注意变量的作用域和赋值行为,避免出现错误。

-- -------------------- ---- -------
-- ----- --- ---------
-------- --------------- -
  --- ---- - - -- - - ---------- - -- ---- -
    --- ---- - - -- - - ---------- - - - -- ---- -
      -- ------- - ----- - --- -
        --- ---- - -------
        ------ - ----- - ---
        ----- - -- - -----
      -
    -
  -
  ------ ----
-
--- --- - --- -- -- -- ---
----------------------------- -- --- -- -- -- --

在这个例子中,我们使用 let 关键字声明变量 i、j 和 temp,让变量的作用域都在所在的 for 循环代码块内有效;而且由于 let 关键字不允许变量提升,所以需要在循环之前先声明这些变量。这样可以避免变量的作用域冲突和重复声明,使程序更加规范和清晰。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6476b4fe968c7c53b035c073

纠错
反馈