Javascript 什么是;如果(<;函数名>;)";什么意思?

Javascript 什么是;如果(<;函数名>;)";什么意思?,javascript,Javascript,这里,“if(predicate&&!predicate(v))”返回什么?什么时候它会返回true/false?如果未定义,则返回false;否则返回true我有一段时间没有使用javascript了,所以您必须接受我的说法,但如果我没有记错,所有函数都只是变量,所以说如果(谓词)仅仅意味着是否定义了谓词。在这个范围内,它意味着如果向参数提供了一个值(函数) 因此本质上if(谓词&&!谓词(v))在调用函数之前首先检查函数是否存在,因为他们不想调用不存在的函数语句if(谓词&&!谓词(v))计

这里,“if(predicate&&!predicate(v))”返回什么?什么时候它会返回true/false?

如果未定义,则返回false;否则返回true

我有一段时间没有使用javascript了,所以您必须接受我的说法,但如果我没有记错,所有函数都只是变量,所以说
如果(谓词)
仅仅意味着是否定义了谓词。在这个范围内,它意味着如果向参数提供了一个值(函数)

因此本质上
if(谓词&&!谓词(v))
在调用函数之前首先检查函数是否存在,因为他们不想调用不存在的函数

语句
if(谓词&&!谓词(v))
计算谓词和谓词(v)的对立面是否都是
true


这对于
谓词
来说是正确的!谓词(v)
等于除
null
false
未定义的
<0
之外的任何事物,或者一个空字符串。

如果传递了
谓词
,并且在调用
v
时失败,则执行一些操作。
addPrivateProperty(o,“Name”)
可以工作,将
未定义的
作为
谓词
传递,例如,不执行检查。另外,不要使用这种模式。这在JavaScript中非常可怕。这部分是正确的,还有其他条件是false或
NaN或空字符串<顺便说一句,code>null
是小写的。True。有太多的可能性,很难把它们全部列出。事实上,这涵盖了所有的可能性=DI guess
null
不像PHP那样不区分大小写。好的,谢谢你今天教了我一些东西。诀窍是,虽然他们在测试中的评估结果都是假的,但只有一些是
==
,没有一个是
==
,一个甚至连自己都没有!:-)“如果谓词已定义”-否。谓词通过将其包含在形式参数列表中来有效地声明,因此它被定义(但在该点上尚未被赋值,因此它被设置为未定义)。此外,测试只查看其值的计算结果是否为false,因此它可能是未定义的、null、NaN、0、“(空字符串)或false。
function addPrivateProperty(o,name,predicate){
    var value;
    o["get"+name]=function(){return value;};
    o["set"+name]=function(v){
        if (predicate && !predicate(v))
            throw Error("set"+name+": invalid value "+v);
        else
            value=v;
    };
}
var o={};
addPrivateProperty(o,"Name",function(x){return typeof x=="string";});