- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>在不同的作用域或块中,通过 let 重新声明变量是允许的p>
- <p id = "v">p>
- <script>
- let d = 30;
-
- {
- let d = 90;
- }
-
- {
- let d = 100;
- }
- document.getElementById("v").innerHTML = d;
- script>
- body>
- html>
在不同的作用域或块中,通过 let 重新声明变量是允许的
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>通过 var 声明的变量会提升到顶端p>
- <p id = "h">p>
- <script>
- libai = "李白";
- document.getElementById("h").innerHTML = libai;
- var libai;
- script>
- body>
- html>
通过 var 声明的变量会提升到顶端
在声明 let 变量之前就使用它会导致 ReferenceError。
变量从块的开头一直处于“暂时死区”,直到声明为止
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>块作用域p>
- <p id = "a">p>
- <script>
- var hh = 300;
- {
- const hh = 900;
- }
- document.getElementById("a").innerHTML = hh;
- script>
- body>
- html>
块作用域
在块作用域内使用 const 声明的变量与 let 变量相似。
在本例中,x 在块中声明,不同于在块之外声明的 x
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>在声明时赋值p>
- <p id = "q">p>
- <script>
- try{const libai = "铠甲勇士";
- libai = "铠甲勇士刑天";
- }
- catch (err){
- document.getElementById("q").innerHTML = err;
- }
- script>
- body>
- html>
在声明时赋值
JavaScript const 变量必须在声明时赋值
- html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>title>
- head>
- <body>
- <p>不是真正的常数p>
- <p id = "hh">p>
- <script>
- try{const libai = '李白';
- libai = 9;
- }
- catch(err){
- document.getElementById("hh").innerHTML = err;
- }
- script>
- body>
- html>
不是真正的常数
关键字 const 有一定的误导性。
它没有定义常量值。它定义了对值的常量引用。
因此,我们不能更改常量原始值,但我们可以更改常量对象的属性
原始值
如果我们将一个原始值赋给常量,我们就不能改变原始值