【发布时间】:2015-11-04 11:37:30
【问题描述】:
我在 JS 中遇到了一个奇怪的返回问题,这取决于我的变量是否在同一行中声明和分配。也许有人可以解释为什么会发生这种情况。
当我运行这段代码时(变量在同一行中声明和赋值),它什么也不返回,这是有道理的,因为没有返回语句。
var hero = "lame";
var badguy = "strong";
if (hero === "strong") {
if(badguy === "weak") {
console.log("Awesome you won!");
}
console.log("You did not win.");
}
但是,当我运行这段代码时(变量在不同的行上声明和赋值),它返回“strong”,这是最后一个被赋值的变量,即使没有返回语句。这是为什么呢?
var hero, badguy;
hero = "lame";
badguy = "strong";
if (hero === "strong") {
if(badguy === "weak") {
console.log("Awesome you won!");
}
console.log("You did not win.");
}
感谢您的帮助!
【问题讨论】:
-
它没有返回“strong”,你的 if 语句没有被执行。正在输出表达式 badguy = "strong" 的结果。
-
badguy = "strong" 只是将 "strong" 分配给 badguy。没有return语句,那么为什么会返回“strong”呢?它与代码的第一个 sn-p 有何不同?谢谢!
-
你能在jsfiddle.net创建一个demo吗
-
jsfiddle.net/arunpjohny/vfsxtnf5/2 - 没有返回任何内容
-
我假设您在控制台中运行所有这些。在这种情况下,控制台将显示最后执行的语句中的表达式的值。这是分配,因为第一个 if 条件将是错误的。控制台中的这种行为不是“返回”;它与函数中的
return语句的概念无关。
标签: javascript return return-value variable-declaration