是否可以将一个if语句的返回值用作另一个条件的条件?

时间:2019-09-03 21:55:10

标签: javascript if-statement conditional-statements

我想知道是否可以将一个if-else的返回值用作另一个if-else的条件。

img中的第一个if-else file2.js中,在任何给定点返回一个变量。

在第二个if-else link中的file3.js中,我试图将img的输出用作link条件的一部分。

我尝试使用====,但是事实证明,这只能分别加载link返回值的第一个和最后一个结果。

<!-- file1.html is only included for context and AFAIK, doesn't really affect my question: -->

<script async src="file2.js"></script>
<p>
    <a target="_blank" href="file3.html" id="aTarg" name="aTarg">
    <img src="https://i.imgur.com/4LtRreH.png" id="pic" name="pic"/>
        </a>
</p>
<p>....more article text</p>



/* file2.js */

const now = new Date();
 const timeNoon = now.getHours() === 12;

const CallingS1 = "https://i.imgur.com/5IaY11U.png";
const CallingS2 = "https://i.imgur.com/ANdRs50.png";

let img = function() {
    if (timeNoon) {
        return CallingS1;
    } else {
        return CallingS2;
    }
}
// function imgLink() works well:

function imgLink() {
    document.getElementById('pic').src=img();
}

imgLink();


<!-- file3.html: -->

<head>
<script src="file2.js"></script>
<script>
/* Here is where the problem's begin. I'm trying to use the output of img (in file2.js) be the conditions for link() */
  function link() { 
    if (img === CallingS1) {
        return location.replace("https://www.google.com/");
    } else if (img === CallingS2) {
        return location.replace("https://www.bing.com/");
    } else {
        return location.replace("https://stackoverflow.com/");
    }
  }
</script>
</head>
<body onload="link()">
</body>

我试图让function link()依赖于let img = function()的输出。

1 个答案:

答案 0 :(得分:3)

img是一个函数。只需调用它即可,例如:

function link() { 
  const imgRes = img();
  if (imgRes === CallingS1) {
    return location.replace("https://www.google.com/");
  } else if (imgRes === CallingS2) {
    return location.replace("https://www.bing.com/");
  } else {
    return location.replace("https://stackoverflow.com/");
  }
}