gpt4 book ai didi

javascript - 我可以相信新数组中的元素等于 false 吗?

转载 作者:行者123 更新时间:2023-11-28 13:45:59 25 4
gpt4 key购买 nike

在我测试的浏览器中,var a = new Array(5); 将返回一个由 5 个undefined 元素组成的数组。由于 undefined 等于 false 我可以认为我的数组是用 false 元素初始化的,只要我这样测试它们:

if (a[0]) console.log("the element is no longer falsy");
else a[0] = true;

这是用 false 值初始化 Array 的安全方法还是只是应该避免的黑客行为?

编辑:我的目标是将其初始化为虚假值,如我的示例所示。我想确保 new Array() 是一种值得信赖的方法。

最佳答案

当你在 Javascript 中初始化一个数组时,它没有元素,即任何位置都不存在任何内容,除非你在那里放置一些东西。您唯一拥有的是将 length 设置为您指定的数字。

当您通过读取元素来访问该元素但其中没有任何内容时,您会得到未定义(当您访问不存在的对象的成员时会发生这种情况)。

但请注意,根本不存在的元素与设置为 undefined 的元素并不完全相同。例如:

var x = new Array(5);
console.log(x[2]); // ==> Output is "undefined"
console.log(x.indexOf(undefined)); // ==> Output is "-1" (not present)
x[2] = undefined;
console.log(x.indexOf(undefined)); // ==> Output now is "2"

如果您只关心将元素放入 if 中时是否会被视为 true,那么数组第一眼看上去就会包含 undefined 在该上下文中为 false

但请注意,即使是 falsetrue 在 Javascript 中也是一个相当微妙的概念,特别是因为自动转换......例如

console.log([] ? 1 : 2);  // Output is "1", an empty array is "true"
console.log([] == false); // output is "true" (so it's also equal to false!)

关于javascript - 我可以相信新数组中的元素等于 false 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com