!这个是一个逻辑运算符,用于将值转换为其相反的布尔值。因为JavaScript会强制值,所以它会将值“转换”为true/false形式,并返回相反的布尔值。
当我们使用的时候!对0以外的数字进行运算,返回false。这是因为除0以外的所有数字都是真实的。

 

JavaScript Logical Operators

Operator Description
&& logical and
|| logical or
! logical not

Root是一个变量。叹号root是对这个变量进行,取反。例如,如果root等于true, 那么叹号,root就是false。另外在js语言当中,false null  undefined这些表示为否或者空的变量,加上叹号都会变成true。所以很多时候大伙就喜欢不写条件判断,而是通过一个叹号加变量的形式来表示该变量的一些条件。

例如。

if(!root)

的完整写法是

if(root!=undefined&&root!=null)

但是这种语法仅仅在js语言里面有,其他语言里面很少见

所以在其他语言里面判断一个变量非空,就得用比较长的语句,上边的那个条件判断语句