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的 ...
随机推荐
- web前端开发CSS命名规范参考
做为一个web前端工程师,每天接触HTML.css就像吃饭一样,但是作为一名合作.优秀的web前端工程师,对DIV+CSS命名还是有一定的规范的,本文整理了一份web前端开发中DIV+CSS各种命名规 ...
- 【HDU4585 Shaolin】map的经典运用
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4585 题意大意:很多人想进少林寺,少林寺最开始只有一个和尚,每个人有有一个武力值,若这个人想进少林,必 ...
- css文本溢出省略号
.ellip{ display: block; width:200px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; ...
- 解决微信浏览器无法使用window.location.reload()刷新页面
解决方法: 使用 window.location.href=window.location.href+随机数 代替 window.location.reload(). function r ...
- Orale介绍
Oracle数据库: 是甲骨文公司的一款关系数据库管理系统 具有网格计算的框架 数据量大,并发操作比较多,实时性要求高,采取ORACLE数据库 Oracle数据库的体系结构包括物理存储结构和逻辑存储结 ...
- 安卓模拟器研究-root
http://www.bluestacks.cn/index.asp 下载最新的 BlueStacks 尝试了很久都没有root成功. 百度搜索 找到经验文档 http://jingyan.baid ...
- mysql开启慢查询
linux下: 一.在mysql中查询是否开启了慢查询mysql>SHOW VARIABLES LIKE '%slow%'; Variable_name Valuelog_slow_q ...
- sqlserver临时表操作
创建临时表 方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, ...
- Oracle序列和索引
序列和索引 一.序列 1.序列的概念: 序列(Sequence)是用来生成连续的整数数据的对象.它常常用来作为主键的增长列,可以升序,也可以降序. 2.创建序列: 语法:创建序列 ...
- ios开发xcode中设置代码块
在开发中有很多重复的代码,很多开发者把常用的代码做成代码块提高开发效率. 在xcode里选中代码块的时候总是很不容易,点击选中的代码(文字),不要移动和松开鼠标左键,当竖线变成像拉长了的x(我也不知道 ...