Javascript / jQuery if语句没有比较任何东西

时间:2018-01-31 09:53:57

标签: javascript jquery

我在Javascript中使用jQuery是一个很新的事情,我有一个错误,我需要分析预编写函数的每个部分。

这个函数的一部分包括一个似乎没有条件的if语句,我希望有人能够向我解释,代码如下。

$("a").bind("click", myFunction);

function myFunction(event) {
        if (event.target) {
       // some code
    }
}

我的困惑是" if(event.target)"是等于/测试,因为它似乎没有比较任何东西。任何帮助或指向阅读材料将不胜感激。

提前致谢!

3 个答案:

答案 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

注意:false0''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'。这些假设非常常见,因为否则您的代码会因为所有检查而变得缓慢且几乎无法读取。

有关'truthy''falsy'的详情,请参阅Mozilla。