js中==, !==, === ,!=的区别
在讨论比较符的时候我们先要来讨论哈js的类型,这样有助于我们从本质上了解原理。
下面是我找的资料加上个人的总结:
js中有5种数据类型:Undefined、Null、Boolean、Number和String。
还有一种复杂的数据类型Object,Object本质是一组无序的名值对组成的。
JS里不区分整型和浮点型,
new function(),它不再是函数,而是一个JS对象,数组在JS里也被认为是对象,JSON当然也是对象,我们一般用{}扩起来,
依次来表示它是一个JSON对象,几个JSON对象组件的集合叫做JSON数组,也是使用[]括起,它和普通数组没什么区别,只是元素的类型不同而已。
Undefined类型只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的,例子:
var i;
alert(i == undefined);//true
var i;与var i =
undefined;这两句是等价的。
包含Undefined值的变量和未定义的变量是不一样的。
undefined通过==类型转化后会变成false。
即var m;
alert(!m);//true
Null类型也只有一个值:null.null表示一个空对象的指针。
var s=null;
alert(!s);//true
Boolean类型:只有两个字面量true和false。但是js中多有的变量都可以使用Boolean()函数转换成一个Boolean类型的值。
这个就没什么好说的了。
Number类型:整数和浮点数。
NaN:Not a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。
例如:1/0
返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。
针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。
现在在ts(完全兼容js)
如果你申明变量
var s=1/0; //infinity(无穷大)
alert(!s);//false
String 类型:
这个我就不讲了,没意思!
最后再说一个typeof操作符:对一个变量进行推断变量的类型
用法:typeof 95; 或者 typeof(95); 会返回"number".
好了我们在进入正题
var num = 1;
var str = '1';var test = 1;test == num //true 相同类型 相同值 test === num //true 相同类型 相同值test !== num //false test与num类型相同,其值也相同, 非运算肯定是falsenum == str //true 把str转换为数字,检查其是否相等。num != str //false == 的 非运算num === str //false 类型不同,直接返回falsenum !== str //true num 与 str类型不同 意味着其两者不等 非运算自然是true哟js中==, !==, === ,!=的区别的更多相关文章
- jquery中read与js中onload区别
在JavaScript中,onload函数是最经常使用的,几乎涉及到JavaScript的童鞋都少不了要接触它.这个函数的作用就是等待网页完全装载完了以后再去执行代码块内的语句,因为按照文档流的执行顺 ...
- JS中 == ,===, !=, !==的区别
一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false. === 判断规则 如果类型不同,就[不相等] 如果两个都是数值,并且是同一个值,那么[相等]:(!例外 ...
- js中===与==区别
本文出自:http://www.cnblogs.com/yiki/archive/2012/05/08/2489687.html 1.对于string,number等基础类型,==和===是有区别的 ...
- js中==和===区别
简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢, 这么理解: 当进行双等号比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则愿意为你进行一次类型转换 ...
- js中“==”与“===”区别
直接上代码 if(2==='2'){ console.log(true) }else{ console.log(false) } //打印结果 false if(2=='2'){ console.lo ...
- php和js中数组的总结
php中数组的表示方法:array()或者[] js中数组的表示方法:new array()或者[] 一.php中初始化命名数组 在PHP中声明数组的方式主要有两种:一是应用array()函数声明 ...
- js中== 和===中的区别
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- js中的等值运算符(抽象相等==与严格相等===的区别)
js中的等值运算符 js中的相等分为抽象相等和严格相等,他们有什么区别呢. 在说具体算法前,先提下JS数据类型,JS数据类型分为6类:Undefined Null String Number Bool ...
- js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)
js中遍历数组的有两种方式 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){ alert(array[i]) } //for ...
- JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别
JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...
随机推荐
- 定位position
position : absolute | relative | fixed | static 定位:子集可以超出父级的范围,如父级蛇overflow:hidden则看不到. absolute : 绝 ...
- log4net 配置应用
(一). WinForm 或者 WPF 中的配置和应用 <?xml version="1.0" encoding="utf-8" ?> <co ...
- eclipse.ini
-startup plugins/org.eclipse.equinox.launcher_1..jar --launcher.library plugins/org.eclipse.equinox. ...
- php连接多数据库
<?php $conn1=mysql_connect('localhost','root','','new_link '); $conn2=mysql_connect('localhost',' ...
- Struts基础详解
1.web.xml配置: <filter> <filter-name>Struts2</filter-name> <filter-class> org. ...
- ASP.NET中如何读取和写入注册表
直接给源码: 读取注册表内容: RegistryKey regkey=Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Window ...
- python 的重载
python 的重载主要包括方法重载和运算符重载.1.python 方法重载: 其他的语言一般对于方法重载的话,主要是根据参数的类型不同或者是数量不同来区分同名的方法.而python则比较特殊,它本身 ...
- DOM概述
<!-- DOM:Document Object Model 文档对象模型 用来将标记型文档封装成对象,并将标记型文档中的所有内容(标签,文本,属性等)都封装成对象 封装成对象的目的是为了更为方 ...
- EntityFramework 实体拆分与表拆分
摘录自https://msdn.microsoft.com/zh-cn/data/jj591617 * 将实体类型的 CLR 属性映射到数据库中的多个表(实体拆分) 实体拆分允许一个实体类型的属性分散 ...
- Day2(2016/1/22)——Testing
Activity Button,Toast,Finish 显式intent 隐式明天再看…… 感觉要先补一补java……