JavaScript中的真和假,==和===, 不等
咋JS中,下面这些值表示 “假”:
"" (empty string)
0,-0,NaN (invalid number)
null, undefined
false
除了上面这些在“假”值名单中的其他任何值都是“真”的,这里是一些例子:
"hello"
41
true
[],[1,"2",3] (arrays)
{}, {a: 42} (objects)
function foo() { .. } (functions)
== 检测值是否相等的时候,允许发生转换(隐式转换)
===检测值的时候则不允许发生转换, 所以 ===被称为“严格相等”
所以:
== 非严格相等中发生的隐式转换
=== 严格相等
var a = "42";
var b = 42;
a == b // true
a === b //false
在JS中,有人不建议使用==,这里有一些总结的规则,来说明何时要避免使用==,何时可以放心的使用==
. 如果比较的两个值可能是 true 或者 false, 避免使用 ==
. 如果比较的两个值是这些特定值(0, "", [] --- 空数组), 避免使用 ==
. 所有其他情况下,你都可以放心使用==, 它不但安全,而且可以提高可读性来简化代码
最大的原则: 如果你对这些值很确定,那使用 == 就是安全的,就可以使用
如果你对这些值不太确定,那就使用 ===
eg: 默认情况下 array数组转为string字符串,就是简单地把所以值通过逗号(,)连接在一起。你可能以为两个拥有相同内容的array是相等的, 但是实际上并不是这样
var a = [1,2,3];
var b = [1,2,3];
var c = "1,2,3";
a == c; //true
b == c; //true
a == b; //false
不等
在JavaScript中,string值也能被用于不等比较,使用的是字母表规则 ("bar" < "foo")
注意与(“==”和“===”) 不同的是, 不等运算符没有 “严格不等” 运算符
var a = 35;
var b = "36";
var c = "37";
a < b; //true
b < c; //true
不同类型的值比较中, 有个特别坑的情况:
var a = 35;
var b = "test";
a < b; //false
a > b; //false
a == b; //false
在 < 和 > 比较中,b被强制转换成"无效的数字"NaN, ES规范中,NaN既不大于也不小于其他任何值.
JavaScript中的真和假,==和===, 不等的更多相关文章
- 真与假与c#,java中的不同之处
/************真与假************/ /*C语言中:真(非0).假(0) * Java.C#中:真(true).假(false) * JavaScript中:真(非0.true. ...
- JavaScript基本概念C - 真与假
真与假 与 c 和 c++ 非常相似, 但与 Java 不同, JS中被认为true或false范围很广.所有对象 (空字符串除外) 和非零数字都被视为 true.空字符串.零.null 和undef ...
- 深入理解JavaScript中的==运算符
原文章地址 在详细介绍图1中的每个部分前,我们来复习一下JS中关于类型的知识: JS中的值有两种类型:基本类型.对象类型. 基本类型包括:Undefined.Null.Boolean.Number和S ...
- javascript 中的 true 或 false
JavaScript中奇葩的假值 通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 1 2 3 4 5 6 7 if (boo) { // do somet ...
- JavaScript中奇葩的假值
通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 if (boo) { // do something } while (boo) { // do some ...
- JavaScript中一些你不一定知道的问题(持续更新中。。。。)
一些js的问题与解析 1) ["1","2","3"].map(parseInt);的运行结果是? A.["1",&qu ...
- javascript中typeof与instanceof的区别
JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前 ...
- JavaScript中字符串类型
字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类 ...
- Jquery中$(document).ready() 和 JavaScript中的window.onload方法 比较
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 win ...
随机推荐
- 高通8X16电池BMS算法(二)【转】
本文转载自:http://www.voidcn.com/blog/yanleizhouqing/article/p-6051912.html 上一篇主要讲电池相关的一些知识,上节忘记讲了,电池一般分为 ...
- ACM,我回来了!
经过两天的时间,到了家一趟! 我终于又重新回到ACM实验室了!,有点头晕啊!!!
- springmvc对象映射个数超过256个
/** 由于Spring在接受前台传入的List时,就会出现256的IndexOutOfBoundsException异常 设置setAutoGrowCollectionLimit为1024 @par ...
- spring boot项目遇到 'lower_case_table_names' 的解决办法
今天自己搭建了spring boot项目,配置的是mysql数据库,启动时报如下错误 Mon Jan 22 23:31:40 CST 2018 WARN: Establishing SSL conne ...
- python习题-判断输入字符串是不是小数类型
写一个能判断输入的字符串是不是个小数类型的1,判断小数点的个数是否为1 count2,判断是否小数右边是整数 isdigit3,判断小数点左边的1,整数 isdigit ,2如果是负整数,取负号右边, ...
- Git_学习_06_ 放弃本地修改
一.未使用 git add 缓存代码时 git checkout -- filepathname // 放弃某个文件 git checkout . // 放弃所有文件 git checkout . 用 ...
- 关于字符,字节与base64编码的理解
字符是用来显示的,如中文字符,英文字符,其类型我字符(串)类型: 字节是用来存储的,一个字节为8bit.由于字节是8位,无法对中文编码,因此诸如a=b'中文'的写法是错误的.但英文标点数字是可以的,如 ...
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
一.标题:正则表示 正则表达式表示了串的某种规则或规律.恰当地使用正则表达式,可以使得代码简洁.事半功倍.java的很多API都支持正则表达式作为参数.其中的String.split就是这样. ...
- 上海-北京间通过Azure Storage的RA-GRS类型的存储账户进行快速复制
Azure的Blob存储分成多种类型,目前主要有: 其中RA-GRS可以在上海-北京两个数据中心间同步数据.并且,在第二个数据中心可以只读的方式读取这个存储账户中的Blob内容. 虽然GRS采用的是准 ...
- CentOS 7关闭firewalld启用iptables
在CentOS7中,有很多CentOS 6中的常用服务发生了变化. 其中iptables是其中比较大的一个.防火墙iptables被firewalld取代. 本文将介绍,如果采用systemctl关闭 ...