什么是'';javascript中的语法含义?

什么是'';javascript中的语法含义?,javascript,operators,Javascript,Operators,我在一个Windows应用商店应用程序示例中遇到了以下代码行 if (that.assets[asset].object === null || !!!that.assets[asset].object.canPlayType) { 它使用三个感叹号语法。我做了一些测试(我很确定我错过了一些东西),结果总是一样的。我认为它在某种程度上等同于==和== 谁能解释一下语法意味着什么 我假设它在某种程度上等同于===和!== 不,只有三个“不”操作符,一个“不” 它与相同!(!(!(x)),并且始终

我在一个Windows应用商店应用程序示例中遇到了以下代码行

if (that.assets[asset].object === null || !!!that.assets[asset].object.canPlayType) {
它使用三个感叹号语法。我做了一些测试(我很确定我错过了一些东西),结果总是一样的。我认为它在某种程度上等同于
==
==

谁能解释一下
语法意味着什么

我假设它在某种程度上等同于===和!==

不,只有三个“不”操作符,一个“不”

它与
相同!(!(!(x))
,并且始终等同于单个
!x

这简直没有用<代码>
是将任何变量转换为其布尔表示形式的一种有点神秘的方法,但是
太傻了。您可以链接任意数量的
,但它对任何事情都没有用处

我假设它在某种程度上等同于===和!==

不,只有三个“不”操作符,一个“不”

它与
相同!(!(!(x))
,并且始终等同于单个
!x


这简直没有用<代码>
是将任何变量转换为其布尔表示形式的一种有点神秘的方法,但是
太傻了。您可以链接任意数量的
”在一起,但对任何事情都没有用处。

!!!是三重否定,所以它与!:

!true -> false

!!true -> true

!!!true -> false

!!!是三重否定,所以它与!:

!true -> false

!!true -> true

!!!true -> false

这完全回答了你的问题

!!!x可能是一个布尔转换的倒数!!x:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true
“任何非空字符串的计算结果均为true”

所以
!!!“假”;/==错误

这个问题不是开玩笑。例如:

function ok(value, message) {
  if (!!!value) fail(value, true, message, '==', assert.ok);
}
assert.ok = ok;
编辑:我认为他们这样做是出于代码可读性的原因,出于习惯,因为

编辑:我不知道为什么我5天前下载的Node.js版本仍然存在!!!价值而不是价值!GitHub中的值


编辑:。org的稳定版本,还有!!!值,不稳定的版本具有!价值修正案。

这完美地回答了你的问题

!!!x可能是一个布尔转换的倒数!!x:

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true
“任何非空字符串的计算结果均为true”

所以
!!!“假”;/==错误

这个问题不是开玩笑。例如:

function ok(value, message) {
  if (!!!value) fail(value, true, message, '==', assert.ok);
}
assert.ok = ok;
编辑:我认为他们这样做是出于代码可读性的原因,出于习惯,因为

编辑:我不知道为什么我5天前下载的Node.js版本仍然存在!!!价值而不是价值!GitHub中的值


编辑:。org的稳定版本,还有!!!值,不稳定的版本具有!价值修正案。

我不敢相信只是。。。用3写有什么用呢!而不是像我说的那样,只有1?没有用。除了模糊处理之外,任何有效的用法都不可能存在。它总是相当于一个
。程序员太傻了。这是程序员的@Jongware No,而不仅仅是奇数;正如我所说的,你可以把一个任意的数字连在一起,这对任何事情都没有用处。唯一有用的数字是
,我在回答中提到过。@Geoyws这正是我在回答中所说的<代码>!!!x是
的否定词!!x
,但它是无用的,因为它相当于
!x
。没有理由使用
!!!x
而不是
!x
。我不敢相信只是。。。用3写有什么用呢!而不是像我说的那样,只有1?没有用。除了模糊处理之外,任何有效的用法都不可能存在。它总是相当于一个
。程序员太傻了。这是程序员的@Jongware No,而不仅仅是奇数;正如我所说的,你可以把一个任意的数字连在一起,这对任何事情都没有用处。唯一有用的数字是
,我在回答中提到过。@Geoyws这正是我在回答中所说的<代码>!!!x是
的否定词!!x
,但它是无用的,因为它相当于
!x
。没有理由使用
!!!x
而不是
!这个问题是七个月前提出(并得到回答)的。您的答案显然没有带来太多东西,除了提到像这样的代码以前在Node中,但现在没有。这可以通过一个评论来实现,可能包含一个到你的问题的链接。只发布一次这样的答案是可以理解的,因为发布这样的答案非常接近滥用的底线。请花一些时间阅读,并请不要张贴这样的答案在未来。谢谢。@FrédéricHamidi它仍然用于从Nodejs.org下载的。它仅在v0.11.xx以后版本中实施,只能通过其他渠道使用。@FrédéricHamidi您显然没有阅读链接。尤其是最后一个。这是乔纳森·洛诺夫斯基的评论。在评论之前,请花一段不切实际的时间阅读和理解手头上的所有东西。谢谢你,你可能没有领会我的意思。我已经阅读了这些链接,虽然您可能对它们感兴趣,但它们实际上与这个问题无关(这里的发问者并不关心节点,只询问了
!!!
结构)。你也在另一个问题下发布了完全相同的迟交答案,这是一个问题。这是对主要问题IMHO的正确和完美的回答。这个问题是七个月前提出(并回答)的。您的答案显然没有带来太多东西,除了提到像这样的代码以前在Node中,但现在没有。这可以通过一个评论来实现,可能包含一个到你的问题的链接。只发布一次这样的答案是可以理解的,因为发布这样的答案非常接近滥用的底线。P