Javascript 对JS中Delete操作符的理解

Javascript 对JS中Delete操作符的理解,javascript,Javascript,var trees=[“红杉”、“海湾”、“雪松”、“橡树”、“枫树”]; 删除树[3]; 如果(树中为3){ console.log(树[3]); } 否则{ 控制台日志(“未找到”); }在代码中添加注释以获得更好的解释 let tress=[“红木”、“海湾”、“雪松”、“橡树”、“枫树”]; //数组是属性作为元素索引的对象 //这将打印对象中当前的所有关键帧 console.log(Object.keys(tress)); 删除树[3]; 控制台日志(tress); //现在您可以看

var trees=[“红杉”、“海湾”、“雪松”、“橡树”、“枫树”];
删除树[3];
如果(树中为3){
console.log(树[3]);
}
否则{
控制台日志(“未找到”);

}
在代码中添加注释以获得更好的解释

let tress=[“红木”、“海湾”、“雪松”、“橡树”、“枫树”];
//数组是属性作为元素索引的对象
//这将打印对象中当前的所有关键帧
console.log(Object.keys(tress));
删除树[3];
控制台日志(tress);
//现在您可以看到属性3已从数组中删除
console.log(Object.keys(tress));
如果(3英寸树){
console.log(tress[3]);
}
否则{
控制台日志(“未找到”);
}
//由于该属性不存在,因此打印未找到
答案显示“未找到”,但不显示未定义。为什么呢

您删除了名为
3
的属性(这与现有属性不同,但其值
未定义
)。因为它不存在,所以它不在数组中。因此,您点击了
else
分支

即使在最后,当我们计算数组的长度时,它显示为5,而不是4


长度是以整数加1命名的最高属性的名称

代码中有语法错误。你宣布

变异树

然后您尝试删除不存在的变量:

删除树[3]

删除命令将从数组中删除一个条目,并使其未定义

可以找到有关删除的更多详细信息。

以下代码返回“未找到”,因为“oak”已从数组中删除

var trees=[“红杉”、“海湾”、“雪松”、“橡树”、“枫树”];
删除树[3];
if(树木指数(“橡树”)>0){
console.log(树[3]);
}
否则{
控制台日志(“未找到”);

}
答案显示“未找到”和“未定义”,这是因为您正在执行
console.log(“未找到”)
当我们删除else语句时,它在控制台日志中没有显示任何内容。首先,您有一个输入错误:
tress
=/=
trees
我不知道这在您的实际代码中是否重要,但请检查它(看起来很重要。请先检查类似错误)“数组可以被视为对象”-数组是一个对象。这就是我的意思。我希望您删除else语句,然后看看答案是什么。对我来说,它在控制台日志中没有显示任何内容,我也不知道为什么。你正在打印一些特定的内容吗?如果没有,您将不会收到任何消息,因为它不会进入elseconole.log(trees[3]);我理解这一部分,但是当您删除else语句时,为什么控制台日志根本不显示任何内容?它甚至不显示undefined。@Divij
if(树中的3)
总是false这就是为什么。必须使用indexOf(“oak”)检查元素是否存在not@Divij-你说的是
if(false){x}else{y}
。所以它是
y
。如果删除else,则不会使
If
为真。它只是不做它以前做过的事,所以它现在什么都不做。是的,我现在明白了。我的错,我不知道如果它是假的,会显示空白。非常感谢您澄清我的疑问。@Divij哪一个?@Divij
indexOf”如果在数组中找不到元素,则返回
-1`。