当变量在不同的行上声明和赋值时返回最后赋值

Returning Last Value Assigned When Variables are Declared and Assigned on Different Lines

本文关键字:赋值 声明 最后 返回 变量      更新时间:2023-09-26

我在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.");
}

谢谢你的帮助!

在JavaScript(以及其他一些语言)中,当您执行赋值时,该赋值的值将自动返回。因此,您可以看到控制台正在记录它。奇怪的是,我在网上找不到合适的参考资料。这是我能找到的最好的:http://www.sitepoint.com/assignment-inside-a-condition/

你能实现你的函数声明和函数调用吗?
我在浏览器控制台中尝试下面的代码,它们都返回未定义。

funcA = function() {
  var hero = "lame";
  var badguy = "strong";
  if (hero === "strong") {
    if(badguy === "weak") {
      console.log("Awesome you won!");
    }
    console.log("You did not win.");
  }
}
funcB = function() {
  var hero, badguy;
  hero = "lame";
  badguy = "strong";
  if (hero === "strong") {
    if(badguy === "weak") {
      console.log("Awesome you won!");
    }
    console.log("You did not win.");
  }
}
funcA(); // undefined
funcB(); // undefined