我看到有人写代码,什么是 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");
}
}
它正在检查三个元素(logo、flipkart 和bird)的 src 属性中是否包含名为“Office.jpg”的图像。
该函数的作用是检查全局变量 a 和 b 是否为真(即不同于 0)以及 c 是否等于 2。
在 javascript 中,当我们检查值为零的变量时,返回 false,任何大于 0 的数字都是 true。
代码很笨拙并且有一些错误
似乎想测试一下所有加载图片的函数是否都已经加载了,如果有的话,就会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");