您能解释一下下面示例中ModelState.IsValid
和ModelState.IsValid()
之间的区别吗? (他们两个都在工作)
var func = function () {
var ModelState = {
IsValid: function () {
return true
}
};
// ModelState.Isvalid() is working, too
document.body.innerHTML = ModelState.IsValid
? 'ModelState is valid' : 'ModelState is invalid'
};

<button onclick="func()">Click me</button>
&#13;
如上所示,ModelState
是一个json对象。如果我可以致电ModelState.IsValid
,在这种情况下IsValid
是json property
吗?
答案 0 :(得分:1)
如果我可以调用ModelState.IsValid,IsValid是否被称为json属性 这个案子?
ModelState
是一个对象文字,isValid
是此对象的属性。
如果您将代码更改为
document.body.innerHTML = ModelState.Isvalid
? 'ModelState is valid' : 'ModelState is invalid'
它将输出ModelState is invalid
答案 1 :(得分:1)
IsValid
是一个功能。因此,当您执行此操作ModelState.IsValid
时,这将返回函数而不是其值。
ModelState.IsValid()
这将执行它并为您提供返回值。
var func = function () {
var ModelState = {
IsValid: function () {
return true
}
};
console.log("ModelState.IsValid: ", ModelState.IsValid)
console.log("ModelState.IsValid():", ModelState.IsValid())
// ModelState.Isvalid() is working, too
document.body.innerHTML = ModelState.IsValid
? 'ModelState is valid' : 'ModelState is invalid'
};
&#13;
<button onclick="func()">Click me</button>
&#13;
现在,为什么三元运算符起作用:
JS尝试将值转换为Boolean
。如果无法做到这一点,则检查可用性。所以当你这样做时
if("")
它会将""
转换为0
,而0
会被视为false,但如果它有值,则视为true。
var a = "";
alert(a?true:false);
a = "function(){...}";
alert(a?true:false);
&#13;