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";});
这里,“if(谓词&&!谓词(v))”返回了什么?什么时候会返回true / false?
答案 0 :(得分:0)
如果未定义则为False,否则为true
答案 1 :(得分:0)
我有一段时间没有完成javascript,所以你必须忍受我,但如果我没记错,所有函数都只是变量,所以说if(predicate)
只是意味着谓词是定义的。在此范围内,它表示是否为参数提供了值(函数)。
所以基本上if (predicate && !predicate(v))
在调用之前首先检查函数是否存在,因为它们不想调用不存在的函数
答案 2 :(得分:0)
语句if (predicate && !predicate(v))
评估谓词和谓词(v)的反义词是否true
。
predicate
或!predicate(v)
等于 null
, false
以外的任何内容都是如此, undefined
, 0
, NaN
或空字符串。