我看到有人写代码,什么是check();在每个函数之后使用?

问题描述 投票:0回答:2

我看到有人写代码,什么是 check();在每个函数之后使用?

为什么在这段代码中使用 check();我想函数被调用了很多次

var a = 0;
var b = 0;
var c = 0;

function logo(c) {
  let nolo = document.getElementById('logo');
  nolo.setAttribute('src', "Office.jpg");
  golo = nolo.getAttribute('src');
  if (golo === "Office.jpg") {
    window.c = 2;
  }
  check();
}

function myflipkart(a) {
  let olo = document.getElementById('flipkart');
  olo.setAttribute('src', "Office.jpg");
  polo = olo.getAttribute('src');
  if (polo === "Office.jpg") {
    window.a = 2;
  }
  check();
}

function mybird(b) {
  let lo = document.getElementById('bird');
  lo.setAttribute('src', "Office.jpg");
  bolo = lo.getAttribute('src');
  if (bolo === "Office.jpg") {
    window.b = 2;
  }
  check();
}

function check() {
  if (a && b && c === 2) {
    console.log("Hello");
  }
}
javascript function
2个回答
0
投票

它正在检查三个元素(logo、flipkart 和bird)的 src 属性中是否包含名为“Office.jpg”的图像。

该函数的作用是检查全局变量 a 和 b 是否为真(即不同于 0)以及 c 是否等于 2。

在 javascript 中,当我们检查值为零的变量时,返回 false,任何大于 0 的数字都是 true。


0
投票

代码很笨拙并且有一些错误

似乎想测试一下所有加载图片的函数是否都已经加载了,如果有的话,就会console.log hello

但是这个测试并不是测试作者的意图。 然而它仍然偶然有效,因为 2 是truthy

if (a && b && c === 2) {
  console.log("Hello");
}

应该是

if (a === 2 && b === 2 && c === 2) {
  console.log("Hello");
}

或者使用 false 和 true 代替 0 和 2 并使用

if (a && b && c) {
 console.log("Hello");
}

getAttribute 也是浪费时间

nolo.setAttribute('src', "Office.jpg");
golo = nolo.getAttribute('src');
if (golo === "Office.jpg") { // ALWAYS true

这是一个更短的版本,以更明智的方式执行相同的操作。

const ids = ["logo","flipkart","bird"];
const setAndTest = (id,image) =>
  const img = document.getElementById(id);
  img.src = image;
  img.classList.add('done')
  if (document.querySelectorAll('img.done').length === ids.length) {
   console.log("Hello");
  }
};

// elsewhere

setAndTest("logo","Office.jpg");
setAndTest("flipkart","Office.jpg");
setAndTest("bird","Office.jpg");
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.