我在Javascript中使用jQuery是一个很新的事情,我有一个错误,我需要分析预编写函数的每个部分。
这个函数的一部分包括一个似乎没有条件的if语句,我希望有人能够向我解释,代码如下。
$("a").bind("click", myFunction);
function myFunction(event) {
if (event.target) {
// some code
}
}
我的困惑是" if(event.target)"是等于/测试,因为它似乎没有比较任何东西。任何帮助或指向阅读材料将不胜感激。
提前致谢!
答案 0 :(得分:2)
任何条件都可以测试为'falsy'或'truthy'。
例如:
const iAmTruthy = true;
if (iAmTruthy) {
console.log('the condition is fulfilled');
}
以下是JS中的真实值列表:https://developer.mozilla.org/en-US/docs/Glossary/Truthy
这是另一个假值的例子:
const iAmTruthy = false;
if (!iAmTruthy) {
console.log('the condition is fulfilled');
}
虚假值列表:https://developer.mozilla.org/en-US/docs/Glossary/Falsy
答案 1 :(得分:0)
你在这里做的是比较event.target
。如果变量具有某个值(并且已定义),它将返回true
,否则它将返回false
。
注意:false
,0
,''
或null
也会返回false
。
var a; //undefined
if(a){ console.log('undefined a: true'); } else { console.log('undefined a: false'); }
a = null;
if(a){ console.log('null a: true'); } else { console.log('null a: false'); }
a = 0;
if(a){ console.log('zero a: true'); } else { console.log('zero a: false'); }
a = '';
if(a){ console.log('empty string a: true'); } else { console.log('empty string a: false'); }
a = 1;
if(a){ console.log('number a: true'); } else { console.log('number a: false'); }
答案 2 :(得分:0)
这与jQuery无关,只是简单的JavaScript。
if语句条件是一个表达式,最终计算结果为true或false。这可以是a===b
之类的显式比较,但您也可以通过if语句评估其他被认为是真或假的值。您正在测试他们是否真的' truthy'或者' falsy'。
在这种特殊情况下,您基本上会测试event.target
是否分配了某些内容。如果它有,它是真的,否则它是假的。不成文的假设是,如果有,它是一个有效的DOM元素。
不太可能将其他内容分配给event.target,因此这段代码只是松散地检查某些是否存在,而不是明确检查某些内容是否确实有效是的,而不是15
或'Hello world'
。这些假设非常常见,因为否则您的代码会因为所有检查而变得缓慢且几乎无法读取。