小码哥的IT人生

JavaScript 数组 Const

JavaScript基础 2022-04-25 01:32:19小码哥的IT人生shichen

JavaScript 数组 Const

ECMAScript 2015 (ES6)

2015 年,JavaScript 引入了一个重要的新关键字:const

使用 const 声明数组已成为一种常见做法:

示例代码:

const cars = ["Saab", "Volvo", "BMW"];

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>

运行结果:

Javascript const

Saab,Volvo,BMW

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

无法重新赋值

const 声明的数组不能重新赋值:

示例代码:

const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];    // ERROR

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>您不能重新赋值常量数组:</p>
<p id="demo"></p>
<script>
try {
  const cars = ["Saab", "Volvo", "BMW"];
  cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
  document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>

运行结果:

Javascript const

您不能重新赋值常量数组:

TypeError: Assignment to constant variable.

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

数组不是常量

关键字 const 有一定误导性。

它不定义常量数组。它定义的是对数组的常量引用。

因此,我们仍然可以更改常量数组的元素。

元素可以重新赋值

您可以更改常量数组的元素:

示例代码:

// 您可以创建常量数组:
const cars = ["Saab", "Volvo", "BMW"];
// 您可以更改元素:
cars[0] = "Toyota";
// 您可以添加元素:
cars.push("Audi");

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>声明一个常量数组不会使元素不可更改:</p>
<p id="demo"></p>
<script>
// 创建数组:
const cars = ["Saab", "Volvo", "BMW"];
// 修改元素:
cars[0] = "Toyota";
// 添加元素:
cars.push("Audi");
// 显示数组:
document.getElementById("demo").innerHTML = cars; 
</script>
</body>
</html>

运行结果:

Javascript const

声明一个常量数组不会使元素不可更改:

Toyota,Volvo,BMW,Audi

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

浏览器支持

Internet Explorer 10 或更早的版本不支持 const 关键字。

下表注明了完全支持 const 关键字的首个浏览器版本:

Chrome IE Firefox Safari Opera
Chrome 49 IE 11 / Edge Firefox 36 Safari 10 Opera 36
2016 年 3 月 2013 年 10 月 2015 年 2 月 2016 年 9 月 2016 年 3 月

声明时赋值

JavaScript const 变量在声明时必须赋值:

意思是:用 const 声明的数组必须在声明时进行初始化。

使用 const 而不初始化数组是一个语法错误:

示例代码:

不起作用:

const cars;
cars = ["Saab", "Volvo", "BMW"];

var 声明的数组可以随时初始化。

您甚至可以在声明之前使用该数组:

示例代码:

没问题:

cars = ["Saab", "Volvo", "BMW"];
var cars;

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>JavaScript 提升</h2>
<p id="demo"></p>
<script>
cars = ["Saab", "Volvo", "BMW"];
var cars;
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>

运行结果:

JavaScript 提升

Saab

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

const 块作用域

const 声明的数组具有块作用域

在块中声明的数组与在块外声明的数组不同:

示例代码:

const cars = ["Saab", "Volvo", "BMW"];
// 此处 cars[0] 为 "Saab"
{
  const cars = ["Toyota", "Volvo", "BMW"];
  // 此处 cars[0] 为 "Toyota"
}
// 此处 cars[0] 为 "Saab"

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>使用 const 声明数组</h2>
<p id="demo"></p>
<script>
const cars = ["Tesla", "Volvo", "BMW"];
// 此处 cars[0] 是 "Tesla"
{  
  const cars = ["Toyota", "Volvo", "BMW"]; 
  // 此处 cars[0] 是 "Toyota"
}
// 此处 cars[0] 是 "Saab"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>

运行结果:

使用 const 声明数组

Tesla

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

var 声明的数组没有块作用域:

示例代码:

var cars = ["Saab", "Volvo", "BMW"];
// 此处 cars[0] 为 "Saab"
{
  var cars = ["Toyota", "Volvo", "BMW"];
  // 此处 cars[0] 为 "Toyota"
}
// 此处 cars[0] 为 "Toyota"

完整实例:

<!DOCTYPE html>
<html>
<body>
<h2>使用 const 声明数组</h2>
<p id="demo"></p>
<script>
var cars = ["Tesla", "Volvo", "BMW"];
// 此处 cars[0] 是 "Tesla"
{  
  var cars = ["Toyota", "Volvo", "BMW"]; 
  // 此处 cars[0] 是 "Toyota"
}
// 此处 cars[0] 是 "Toyota"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>

运行结果:

使用 const 声明数组

Toyota

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

您可以在以下章节中学习更多关于块作用域的内容:JavaScript 作用域

重新声明数组

在程序中的任何位置都允许用 var 重新声明数组:

示例代码:

var cars = ["Volvo", "BMW"];   // 允许
var cars = ["Toyota", "BMW"];  // 允许
cars = ["Volvo", "Saab"];      // 允许

不允许在同一作用域或同一块中将数组重新声明或重新赋值给 const

示例代码:

var cars = ["Volvo", "BMW"];         // 允许
const cars = ["Volvo", "BMW"];       // 不允许
{
  var cars = ["Volvo", "BMW"];         // 允许
  const cars = ["Volvo", "BMW"];       // 不允许
}

不允许在同一作用域或同一块中重新声明或重新赋值现有的 const 数组:

示例代码:

const cars = ["Volvo", "BMW"];       // 允许
const cars = ["Volvo", "BMW"];       // 不允许
var cars = ["Volvo", "BMW"];         // 不允许
cars = ["Volvo", "BMW"];             // 不允许
{
  const cars = ["Volvo", "BMW"];     // 允许
  const cars = ["Volvo", "BMW"];     // 不允许
  var cars = ["Volvo", "BMW"];       // 不允许
  cars = ["Volvo", "BMW"];           // 不允许
}

允许在另一个作用域或另一个块中使用 const 重新声明数组:

示例代码:

const cars = ["Volvo", "BMW"];       // 允许
{
  const cars = ["Volvo", "BMW"];     // 允许
}
{
  const cars = ["Volvo", "BMW"];     // 允许
}

完整的数组参考手册

如需完整参考,请访问我们的完整 JavaScript 数组参考手册

该手册包含所有数组属性和方法的描述和实例。

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024