This question already has an answer here:
Console returns undefined [duplicate]
(1个答案)
4年前关闭。
我确定我只是在俯视某件事,但看不到它是什么。
我有一个页面正在使用控制台来测试一些新代码。大部分有效。
退货
鉴于
并且
并且
这是不期望的。
我做了一些分解,看起来这是问题的初始if语句。
我进入控制台:
所以我一步一步检查
退货
“酒吧”
未定义
退货
请注意,我可以将任何JavaScript放入原始的if语句中,但仍然无法定义,因此并不是没有代码可以跳过。
回顾一下,原始代码块似乎永远都不会到达第7行,但在运行了第一组
你会看到的
见下文:
这是REPL环境的典型行为。
(1个答案)
4年前关闭。
我确定我只是在俯视某件事,但看不到它是什么。
我有一个页面正在使用控制台来测试一些新代码。大部分有效。
if(typeof(thisNode.L1.download) != 'undefined') {
console.log('a1');
if (thisNode.L1.download.sku.toString() == lastSku) {
console.log('a2');
addSku = thisNode.L1.cd.sku.toString();
} else { console.log('a3'); }
} else if(typeof(thisNode.S5.download) != 'undefined') {
console.log('b1');
if (thisNode.S5.download.sku.toString() == lastSku) {
console.log('b2');
addSku = thisNode.S5.cd.sku.toString();
} else {
console.log('b3');
}
}
console.log('foo');
退货
a1
a3
foo
undefined
鉴于
typeof(thisNode.S5.download) != 'undefined'
返回true
并且
lastSku
返回"24536"
并且
thisNode.S5.download.sku.toString()
返回"24536"
这是不期望的。
我做了一些分解,看起来这是问题的初始if语句。
我进入控制台:
if (thisNode.L1.download.sku.toString() == lastSku) {}
我得到“未定义”所以我一步一步检查
lastSku
返回"24536"
thisNode
返回一个JSON对象。 Object {L1: Object, S2: Object, S3: Object, S5: Object}
thisNode.L1
返回Object {box: Object, download: Object, cd: Object}
thisNode.L1.download
返回Object {sku: 24354}
thisNode.L1.download.sku
返回24354
thisNode.L1.download.sku.toString()
返回"24354"
thisNode.L1.download.sku.toString() == lastSku
返回false
if (thisNode.L1.download.sku.toString() == lastSku) {
console.log('foo');
} else {
console.log('bar');
}
退货
“酒吧”
未定义
if (thisNode.L1.download.sku.toString() == lastSku) {
console.log('foo');
} else {
console.log('bar');
}
console.log('yabba');
退货
bar
yabba
undefined
请注意,我可以将任何JavaScript放入原始的if语句中,但仍然无法定义,因此并不是没有代码可以跳过。
回顾一下,原始代码块似乎永远都不会到达第7行,但在运行了第一组
if
语句后,它看起来确实确实在所有代码之后都保持了运行状态。 最佳答案
我进入控制台:如果(thisNode.L1.download.sku.toString()== lastSku){}我得到“未定义”
这完全是预期的行为。
您看到的undefined
(以及在较大的代码示例中看到的最后一个undefined
)只是Chrome的JS控制台输出最后一条语句求值的值,而在JavaScript中,if
语句不输出求值。
在控制台上尝试:
console.log('foo')
你会看到的
foo
undefined
foo
由console.log
输出,undefined
是console.log
的返回值。如果查看undefined
的左侧,则会看到灰色的<-
箭头,指示这是最后一条语句的返回值,而不是由代码引起的输出。见下文:
这是REPL环境的典型行为。
09-30 10:57