在js中,为什么!0是true,!!0是false,!1是false,!!1是true,!-1是false,!!-1是true
看过别人以下解析:1.==会把比较的二者进行类型转换:如:0==false;//true,会把0转成bool值进行比较1==true;//true,同样把1转成bool值...
看过别人以下解析: 1. ==会把比较的二者进行类型转换: 如:0 == false; // true, 会把0转成bool值进行比较 1 == true; // true, 同样把1转成bool值再和true进行比较 2. ===是不会把比较的二者进行类型转换,是string就是string,是number就是number 如: 0 === false; // false, 因为0是number,false是boolean,两者就肯定不相等 1 === true; // false 但如果 -1==false //false -1==true //false 负数用==去判断都是false,什么原理?
展开
4个回答
展开全部
一、js中的数字0就是false,非0为true,!表示取反。所以:
!0--false取反--true;
!!0--false双重取反--false;
!1--true取反--false;
!!1--双重取反--true;
!-1--true取反--false;
!!-1--true双重取反--true。
二、==和===:
==:先检查两个操作数数据类型,如果相同,
则进行===比较,
如果不同,
则愿意为你进行一次类型转换,
转换成相同类型后再进行比较;===:
如果类型不同,直接就是false。
具体比较过程:
1、双等号==:
(1)如果两个值类型相同,再进行三个等号(===)的比较。
(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
如果一个是null,一个是undefined,那么相等。
如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较。
2、
三等号===:
(1)如果类型不同,就一定不相等。
(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN(
)
来判断)。
(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
如果两个值都是true,或是false,那么相等。
如果两个值都引用同一个对象或是函数,那么相等,否则不相等。
如果两个值都是null,或是undefined,那么相等。
扩展资料:
在js做比较的时候,有这样的三条规则:
1、如果比较的两者中有bool,会把
bool
先转换为对应的
number,即
0
和
1。
2、如果比较的双方中有一方为number一方为string,会把string转换为数字。
3、把string直接转换为bool的时候,空字符串‘'转换为
false,除此外的一字符串转换为
true。
参考资料:
百度百科--比较运算符
!0--false取反--true;
!!0--false双重取反--false;
!1--true取反--false;
!!1--双重取反--true;
!-1--true取反--false;
!!-1--true双重取反--true。
二、==和===:
==:先检查两个操作数数据类型,如果相同,
则进行===比较,
如果不同,
则愿意为你进行一次类型转换,
转换成相同类型后再进行比较;===:
如果类型不同,直接就是false。
具体比较过程:
1、双等号==:
(1)如果两个值类型相同,再进行三个等号(===)的比较。
(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
如果一个是null,一个是undefined,那么相等。
如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较。
2、
三等号===:
(1)如果类型不同,就一定不相等。
(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN(
)
来判断)。
(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
如果两个值都是true,或是false,那么相等。
如果两个值都引用同一个对象或是函数,那么相等,否则不相等。
如果两个值都是null,或是undefined,那么相等。
扩展资料:
在js做比较的时候,有这样的三条规则:
1、如果比较的两者中有bool,会把
bool
先转换为对应的
number,即
0
和
1。
2、如果比较的双方中有一方为number一方为string,会把string转换为数字。
3、把string直接转换为bool的时候,空字符串‘'转换为
false,除此外的一字符串转换为
true。
参考资料:
百度百科--比较运算符
展开全部
true
和false
和负数比较,
会把
true
隐式转换为1
,false隐身转换为0。
因为JS规定
:非0的数字是true
!,-1
相当于
!
true
肯定是false
。
所以0是true,!!0是false,!1是false,!!1是true,!-1是false,!!-1是true。
Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。
扩展资料:
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的
解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。最早是HTML(标
准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
参考资料:百度百科-js
和false
和负数比较,
会把
true
隐式转换为1
,false隐身转换为0。
因为JS规定
:非0的数字是true
!,-1
相当于
!
true
肯定是false
。
所以0是true,!!0是false,!1是false,!!1是true,!-1是false,!!-1是true。
Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。
扩展资料:
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的
解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言。最早是HTML(标
准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
参考资料:百度百科-js
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Boolean
Variable
(布尔型变量)
是有两种逻辑状态的变量,它包含两个值:真(true)和假(false)。
在js中0为false,其它为true。
!是一个布尔操作符,用于将操作的值强制转换为布尔值并取反。
所以!0即先将0转换为Boolean型false再取反为true。
!!0为!0再取反即false。
!-1是将true取反即为false。
!!-1为!-1取反即为true。
Variable
(布尔型变量)
是有两种逻辑状态的变量,它包含两个值:真(true)和假(false)。
在js中0为false,其它为true。
!是一个布尔操作符,用于将操作的值强制转换为布尔值并取反。
所以!0即先将0转换为Boolean型false再取反为true。
!!0为!0再取反即false。
!-1是将true取反即为false。
!!-1为!-1取反即为true。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单
true
和false
和负数比较
会把
true
隐式转换为1
false隐身转换为0
所以负数用==去比
是false
!-1是false,!!-1是true
这个原理
因为JS规定
非0的数字是true
!-1
相当于
!true
肯定是false
!!true
==
true
你把握隐式转换
和
非0的数是true
就可以解决你的疑惑
true
和false
和负数比较
会把
true
隐式转换为1
false隐身转换为0
所以负数用==去比
是false
!-1是false,!!-1是true
这个原理
因为JS规定
非0的数字是true
!-1
相当于
!true
肯定是false
!!true
==
true
你把握隐式转换
和
非0的数是true
就可以解决你的疑惑
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询