为啥我不能分配 const 但我可以控制台记录它?
Posted
技术标签:
【中文标题】为啥我不能分配 const 但我可以控制台记录它?【英文标题】:Why I can't assign a const but i can console log it?为什么我不能分配 const 但我可以控制台记录它? 【发布时间】:2019-08-14 14:26:06 【问题描述】:我做了一些java脚本练习,让几个链接按字母顺序排列。
这里是 html
<a href="#"> a is good </a>
<a href="#"> c is good </a>
<a href="#"> b is good </a>
const allhref= document.getElementsByTagName('a');
for (let index in allhref)
console.log(allhref[index].innerHTML);
<a href="#"> a is good </a>
<a href="#"> c is good </a>
<a href="#"> b is good </a>
看起来没问题,但是当我尝试将 txt 分配给 const 时,出现了错误(未捕获的 SyntaxError:意外的令牌 const)。这是代码。
const allhref= document.getElementsByTagName('a');
for (let index in allhref)
alltext = allhref[index].innerHTML;
console.log(alltext);
<a href="#"> a is good </a>
<a href="#"> c is good </a>
<a href="#"> b is good </a>
感谢您的回复。 这有点奇怪,我确实在我的电脑上测试过它有错误。 尝试不同的在线编辑器,没有错误。 这是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
<a href="#">a is good </a>
<a href="#">c is good </a>
<a href="#">b is good </a>
<script type="text/javascript">
const allhref= document.getElementsByTagName('a');
for (let index in allhref)
const alltxt = allhref[index].innerHTML;
console.log(alltxt);
// console.log(allhref[index].innerHTML);
</script>
</body>
</html>
【问题讨论】:
使用let
或var
而不是const
可以在第一次分配后更改它
如果要更改值,为什么要使用const
?
如果你得到一个 SyntaxError,它与分配没有任何关系。您提供的代码没有显示任何错误。
正如您在 sn-ps 中看到的,没有任何错误。我猜你在循环之前忘记了const alltext;
。您的问题无法重现。请提供一个minimal reproducible example 来显示您的错误消息。
正如我在第一次 sn-ps 中所说的那样,它是 alltext = allhref[index].innerHTML;
。在最后一个 sn-p 中是const alltext = allhref[index].innerHTML;
。这是一个巨大的差异。您不能将 const
用于要分配新值的变量。
【参考方案1】:
const 在 JavaScript 中是不可变的。您不能为 const 分配新值。为了能够做到这一点,请将 const 更改为 let。
【讨论】:
谢谢。我试试 let 和 var,结果一样。“不是未定义”。【参考方案2】:const 的定义是常量。初始分配后您无法更改它。请改用let
。
【讨论】:
【参考方案3】:因为您没有在 for 循环之后使用大括号 (),并且 alltext 参数的范围在 for 循环中。如果在循环或条件之后有超过 1 行,则应使用花括号。下面的代码正在运行。
const allhref= document.getElementsByTagName('a');
for (let index in allhref)
alltext = allhref[index].innerHTML;
console.log(alltext);
【讨论】:
为什么会出现错误信息Uncaught SyntaxError: Unexpected token const?以上是关于为啥我不能分配 const 但我可以控制台记录它?的主要内容,如果未能解决你的问题,请参考以下文章