首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >返回在不同行上声明和赋值变量时分配的最后值

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

Stack Overflow用户
提问于 2015-08-12 03:14:01
回答 2查看 138关注 0票数 3

我在JS中遇到了一个奇怪的问题,这取决于我的变量是否在同一行中声明和分配。也许有人能解释为什么会发生这种事。

当我运行这段代码(变量在相同的行中声明和赋值)时,它不会返回任何内容,这是有意义的,因为没有返回语句。

代码语言:javascript
代码运行次数:0
运行
复制
var hero = "lame";
var badguy = "strong";

if (hero === "strong") {
  if(badguy === "weak") {
    console.log("Awesome you won!");
  }
  console.log("You did not win.");
}

但是,当我运行这段代码(变量在不同的行上声明和赋值)时,它返回“强”,这是要分配的最后一个变量,即使没有return语句。为什么会这样呢?

代码语言:javascript
代码运行次数:0
运行
复制
var hero, badguy;

hero = "lame";
badguy = "strong";

if (hero === "strong") {
  if(badguy === "weak") {
    console.log("Awesome you won!");
  }
  console.log("You did not win.");
}

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-12 17:19:28

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

票数 2
EN

Stack Overflow用户

发布于 2015-08-12 03:51:33

你能实现你的函数声明和函数调用吗?

我在浏览器控制台中尝试下面的代码,它们都返回未定义的内容。

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31955420

复制
相关文章

相似问题

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