gpt4 book ai didi

Javascript 未定义、空字符串和 if 语句

转载 作者:行者123 更新时间:2023-11-29 17:25:03 26 4
gpt4 key购买 nike

我不是一个在 javascript 方面做过很多工作的人。我的背景是 Java/C++。我目前正在从事一个使用大量 javascript 的项目,但是我遇到了一些对我来说没有意义的东西,但希望那里的一些 javascript 大师可以给我一个很好的逻辑解释。

var noDefinition = undefined;
var emptyString = "";
var noDefinitionAndEmptyString = noDefinition + emptyString;

console.log("NoDefinition");
console.log(noDefinition);

console.log("EmptyString");
console.log(emptyString);

console.log("noDefinition+emptyString");
console.log(noDefinitionAndEmptyString);

console.log("************************");
if(noDefinition == undefined)
{
console.log("No Definition is undefined");
}


if(emptyString == undefined)
{
console.log("emptyString is undefined");
}

if(noDefinitionAndEmptyString == undefined)
{
console.log("noDefiniton and emptyString is undefined");
}

上面的代码在我的控制台中产生了以下结果:
[信息]无定义
[信息]
[信息]空字符串
[信息]
[信息] noDefinition+emptyString
[信息]未定义
[信息] ************
[INFO] 没有未定义的定义

正如您所见,当我将变量 noDefinition 和 emptyString 输出到控制台时,它会产生空白输出。当我连接它们时,控制台将产生未定义的。但是,如果我然后继续使用 if 语句并将它们中的每一个与未定义进行比较。唯一执行的是第一个。

即使将值放入控制台时,该值只显示为空白,也会发生这种情况。此外,在控制台中显示为 undefined 的连接无法与 undefined 进行比较,并且永远不会执行。我对此感到困惑,我希望有人可以给我解释发生了什么。

最佳答案

当你将 undefined 与一个字符串连接起来时,它就变成了一个字符串

var foo = undefined;
var bar = "";
console.log(foo+bar, typeof(foo+bar));
* output *
undefined string

ECMAScript 文档 - http://www.ecmascript.org/docs.php不确定,但阅读第 141 页上的文档,您可以找到这个

15.5.1 The String Constructor Called as a Function

When String is called as a function rather than as a constructor, it performs a type conversion.

这让我相信为什么将任何东西与字符串串联会输出一个字符串

关于Javascript 未定义、空字符串和 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522233/

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