Javascript 什么是;如果(<;函数名>;)";什么意思?
这里,“if(predicate&&!predicate(v))”返回什么?什么时候它会返回true/false?如果未定义,则返回false;否则返回true我有一段时间没有使用javascript了,所以您必须接受我的说法,但如果我没有记错,所有函数都只是变量,所以说Javascript 什么是;如果(<;函数名>;)";什么意思?,javascript,Javascript,这里,“if(predicate&&!predicate(v))”返回什么?什么时候它会返回true/false?如果未定义,则返回false;否则返回true我有一段时间没有使用javascript了,所以您必须接受我的说法,但如果我没有记错,所有函数都只是变量,所以说如果(谓词)仅仅意味着是否定义了谓词。在这个范围内,它意味着如果向参数提供了一个值(函数) 因此本质上if(谓词&&!谓词(v))在调用函数之前首先检查函数是否存在,因为他们不想调用不存在的函数语句if(谓词&&!谓词(v))计
如果(谓词)
仅仅意味着是否定义了谓词。在这个范围内,它意味着如果向参数提供了一个值(函数)
因此本质上if(谓词&&!谓词(v))
在调用函数之前首先检查函数是否存在,因为他们不想调用不存在的函数语句if(谓词&&!谓词(v))
计算谓词和谓词(v)的对立面是否都是true
这对于
谓词
或来说是正确的!谓词(v)
等于除null
,false
,未定义的
,<0
,
之外的任何事物,或者一个空字符串。如果传递了谓词
,并且在调用v
时失败,则执行一些操作。addPrivateProperty(o,“Name”)
可以工作,将未定义的
作为谓词
传递,例如,不执行检查。另外,不要使用这种模式。这在JavaScript中非常可怕。这部分是正确的,还有其他条件是false或NaN或空字符串<顺便说一句,code>null
是小写的。True。有太多的可能性,很难把它们全部列出。事实上,这涵盖了所有的可能性=DI guessnull
不像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";});