在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,什么原理?
展开
 我来答
加百列windy
高粉答主

推荐于2019-10-09 · 每个回答都超有意思的
知道小有建树答主
回答量:2074
采纳率:100%
帮助的人:91.6万
展开全部

一、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。

参考资料:

百度百科--比较运算符

弓魁08
高粉答主

推荐于2019-10-29 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:76
采纳率:100%
帮助的人:2万
展开全部

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RequestBody
推荐于2017-09-27 · TA获得超过171个赞
知道答主
回答量:45
采纳率:0%
帮助的人:34.5万
展开全部
很简单 true 和false 和负数比较 会把 true 隐式转换为1 false隐身转换为0
所以负数用==去比 是false
!-1是false,!!-1是true 这个原理 因为JS规定 非0的数字是true !-1 相当于 !true 肯定是false !!true == true
你把握隐式转换 和 非0的数是true 就可以解决你的疑惑
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
看天下小事
推荐于2019-09-06 · TA获得超过489个赞
知道答主
回答量:41
采纳率:0%
帮助的人:1.1万
展开全部

Boolean Variable (布尔型变量) 是有两种逻辑状态的变量,它包含两个值:真(true)和假(false)。
在js中0为false,其它为true。
!是一个布尔操作符,用于将操作的值强制转换为布尔值并取反。

所以!0即先将0转换为Boolean型false再取反为true。
!!0为!0再取反即false。
!-1是将true取反即为false。
!!-1为!-1取反即为true。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-05-22
展开全部
js是弱数据类型,所有非0的整数都是true
只有0代表false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式