微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 v2 未定义,但具有数组中最后一个元素的值?

如何解决为什么 v2 未定义,但具有数组中最后一个元素的值?

我正在使用模板文字。在控制台中,我放了这段代码

var v2;
a=[1,2,3,2.5];
b=[
  `Math.round(${v2})`
];
var v;
a.forEach( v  => {
    console.log(v);
    v2=v;
    console.log(b[0]);                
  }
          
)

当我第一次在控制台中执行代码时,v2 的内插值为“未定义”。然后我第二次执行代码,插值的值为 2.5,这是数字数组中的最后一个值。为了解决这个问题,我必须将具有模板文字的 b 数组的声明移动到 forEach 函数中。为什么 v2 未定义,然后有值?

解决方法

正如@adiga 的评论所指出的:当分配 b 时,会创建一个带有字符串的数组。该字符串接收其值,同时合并 v2 的值。 v2 从未被赋值,所以它是默认值 undefined

当 JavaScript 引擎运行字符串所在的语句时插入字符串;在您的情况下,当声明数组并将内容放入其中时。它产生一个不可变的字符串,就是这样——你不能有一个随时间改变或重新评估其内容的字符串。最接近的是创建一个返回该字符串的函数,因为每次调用该函数时它都会创建一个新字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。