JavaScript:作为参数传递给if块的函数

God*_*ers 2 javascript function

在下面的代码中如何传递bar为

 function (n) { return n; } 
Run Code Online (Sandbox Code Playgroud)

在if块中foo评估为true?

 function foo(bar) {

    if (bar) {
       // true
    } else {
       // false
    }
 }
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,所以任何帮助都非常感激.

Ski*_*ick 6

如果bar绑定到匿名函数,那么它就是一个对象.对象在JavaScript中是"真实的".

JavaScript中唯一的'falsy'值是:

  • false
  • null
  • undefined
  • '' (空字符串)
  • 0 (零作为数字)
  • NaN

其他一切都是"真实的",包括功能对象.

如果您打算调用匿名函数,那么if (bar(5))您可以使用参数调用匿名函数5.然后你的匿名函数将返回n(5在这种情况下).由于5不是一个虚假的对象,这也将转移到true分支.做到了if (bar(0))会到else分支,因为0是假的.


Nic*_*ver 5

凡是不null,0,false,空字符串或undefined将要评估,以trueif(something)声明中,这是弱类型在JavaScript中是如何工作的.

如果您想要更具体,您可能需要查看typeof运算符以检查您期望的类型,或者使用另一个更强的检查,如下所示:

if(bar === true) {
Run Code Online (Sandbox Code Playgroud)

使用===类型等价的检查.