首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >console.log(String(console.log('Not undefined')) === 'undefined');console.log(String(console.log('Not undefined')) !== 'Not undefined');

console.log(String(console.log('Not undefined')) === 'undefined');console.log(String(console.log('Not undefined')) !== 'Not undefined');
EN

Stack Overflow用户
提问于 2017-08-25 05:41:08
回答 3查看 89关注 0票数 2
代码语言:javascript
复制
console.log(String(console.log('Not undefined')) === 'undefined');
console.log(String(console.log('Not undefined')) !== 'Not undefined');

我觉得这两行代码应该是错误的,但是?如果有人能给我解释一下?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2017-08-25 06:03:22

让我们将其拆分成不同的级别,以使此行为更清晰。首先,在第一行中执行最内部的命令:

代码语言:javascript
复制
console.log('Not undefined')

在这里,console.log函数回显"Not undefined",但它返回undefined。这是JavaScript中的default behavior of all functions。如果它们不显式返回某些内容,它们将返回undefined值。从这里开始,我们使用下面这行代码将undefined转换为string

代码语言:javascript
复制
String(console.log('Not undefined'))

如果我们结合前面的洞察力,在JavaScript运行时会是这样的:

代码语言:javascript
复制
String(undefined)

它的计算结果是字符串"undefined"。接下来,您将执行一个文本比较(=== compares values and types),其计算结果为true

第二行是相同的,只是现在你在比较String(console.log('Not undefined'))不是'Not undefined',所以你也得到了true

票数 3
EN

Stack Overflow用户

发布于 2017-08-25 05:49:16

事实上,确实是这样的。如果在开发人员工具中运行代码,您会注意到它返回三个输出:未定义、“未定义”和“未定义”。实际的未定义结果(不是字符串,它实际上是未定义的)来自console.log命令本身-虽然console.log能够将输出单独打印到控制台,但它本身返回的结果是未定义的。“未定义的”字符串来自string函数,该函数似乎有自己的输出(不知道为什么)。然后,你会得到想要的结果--“不是未定义的”。实际上,它确实会将所需的字符串打印到控制台,但当您尝试将代码分配给变量时,如下所示:

var myVar = console.log(String(console.log('Not undefined')));

myVar返回未定义的。但是,它仍然将输出打印到控制台。

票数 0
EN

Stack Overflow用户

发布于 2017-08-25 05:57:37

代码语言:javascript
复制
console.log(String(console.log('Not undefined')) === 'undefined');

对于第一个,您有来自最深层的调用:console.log('Not undefined'),它显然输出Not undefined。然后,结果(而不是控制台中的实际给定字符串)被提供给String()函数,该函数返回undefined的字符串版本,即'undefined'。总而言之,与'undefined'相比,它返回true

对于另一个来说,它几乎是一样的:

代码语言:javascript
复制
console.log(String(console.log('Not undefined')) !== 'Not undefined');

在这里,console.log('Not undefined')只是将字符串记录到控制台,但将 undefined传递给String(),后者将其转换为"undefined"。然后与"Not undefined"相比,两者都是字符串,但它们是不同的。它返回true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45871333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档