Javascript 回来(proto==null | | proto.constructor==Object);

Javascript 回来(proto==null | | proto.constructor==Object);,javascript,Javascript,只是想了解一下,下面这行应该返回什么&如果proto.constructor=Object return !!( proto === null || proto.constructor === Object ); 更具体地说,如何有效?它将返回一个布尔值:true或false用作双重翻转:如果值为false,则将其翻转为true,然后将其翻转回false。基本上,拥有与没有相同 如果proto===null或proto.constructor===Object,则为True 错误iffprot

只是想了解一下,下面这行应该返回什么&如果
proto.constructor=Object

return !!( proto === null || proto.constructor === Object );

更具体地说,如何
有效?

它将返回一个布尔值:true或false<代码>用作双重翻转:如果值为false,则将其翻转为true,然后将其翻转回false。基本上,拥有
与没有
相同

如果
proto===null
proto.constructor===Object
,则为True

错误iff
proto!==null
proto.constructor!==对象


因此,如果proto.constructor=Object,它将返回true。

类型错误。因为proto未定义且不等于null,所以js将尝试从proto获取不存在的属性“constructor”。

运算符

如果其单个操作数可以转换为true,则返回false;否则,返回true。(MDN)


是一种表示“确保我们返回一个布尔值,并将所有truthy值转换为
true
,将所有falsy值转换为
false
”的快捷方式。具体取决于您将其放在何处。还有什么
proto
是我为什么会获得很多反对票的原因呢?@RuntimeException“How!!works”在SO之前已经被问过并回答过了。此外,我们不知道什么是“原型”,你在哪里定义它?(顺便说一句,我没有投反对票,但我投了接近票,因为你们在这里不清楚)
在这里是完全无用的,因为表达式总是返回布尔值(或抛出异常)。你怎么知道
proto
没有定义?当然,问题没有定义它。然而,我认为你所说的
typeError
,是指
ReferenceError
。具体来说,
ReferenceError:proto没有定义
。所讨论的代码显然只是脚本的一部分,其中可能定义了
proto
。@meagar
return
甚至在
ReferenceError
@C5H8NNaO4 Ah,true之前都会导致
SyntaxError
。你已经超越了我。