null undefined false 值转换的比较

JavaScript权威指南关于等号进行类型转换中的内容:
1、如果两个操作数的类型相同,则 ===== 的比较规则相同。
2、如果两个操作数类型不相同,==相等操作符可能会认为他们相等。检测相等会遵守如下规则和类型转换:
???? a、如果一个值是null,另外一个是undefined,则他们相等;
???? b、如果一个值是数字,另一个是字符串,先将字符串转换成数字,然后使用转换后的值进行比较;
???? c、如果一个值是true,则将其转换为1在进行比较。如果其中一个值是false,则将其转换0再进行比较;
???? d、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,在进行比较。对象通过toString()或者valueOf()方法转换为原始值。js语言核心的内置首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。
???? ???? 注:nullundefined没有这两种方法
???? e、其他不同类型之间的比较均不相等。

解析 console.log(null == 0) 值为false
解析 console.log(false == undefined) 值为false
解析 console.log(null == false) 值为false
因为false会首先转换为0,而null和undefined都不带有任何方法,无法进行类型转换,所以不成立了,这也是为什么null ==0为 false,在JavaScript高级程序设计, p52中看到里面有这么一句“要比较相等性之前,不能将null和undefined转换成其他任何值。”

原文地址:https://www.cnblogs.com/zhongfang/p/12289348.html

时间: 2024-10-29 16:30:58

null undefined false 值转换的比较的相关文章

对null,undefined取反的常见情况分析

1.对空数组判断 var aa=[]; if(aa){ //此时aa为真,所以继续执行 console.log(23423); } 2.对字面量声明的空对象判断 var bb = {}; if(bb){ //此时bb为真,继续执行 alert(234); } 3.对null对象判断 var cc=null; if(!cc){ // 此时cc为假,取反为真,继续执行 alert(34); } 4.对undefined判断 var dd = undefined; if(!dd){ // 此时dd为假

Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number'); alert(typeof("")

2016.8.01 &quot;&quot; null undefined NaN 0 特殊比较是true还是false

在javascript的世界里,无论是函数,还是数组,还是对象,亦或是字符串,数字,布尔类型,在这些数据类型中,总有这么几个特立独行,然后造成一些可有可无的讨厌bug. 而这些讨厌bug出现的原因就是由于比较时产生的错误,而且最不易查出错误. 在这里我们整理了这几个特殊数据类型的比较.直接上代码. 上代码前,普及一个知识: ==内容比较,数据类型不比较. ===内容比较,数据类型也比较. 上代码: ==比较代码: // "" null undefined NaN 0 console.l

js null, undefined, NaN, ‘’, false, 0, ==, === 全验证

<html> <head> <meta charset="utf-8" /> </head> <body> <input type="text" id="input_test"/> <script> ? var test = function(a){ // NaN, undefined if(a != a){ alert('NaN / undefined'); }

js中 null, undefined, 0,空字符串,false,不全等比较

null == undefined // true null == ''  // false null == 0 // false null == false // false undefined == '' // false undefined == 0 // false undefined == false // false '' == 0   // true '' == false // true 0 == false // true undefined,null和 0, '', fals

函数removeVoid(arr),删除该数组中值为“null,undefined”的值,返回原数组

// 写一个函数removeVoid(arr),删除该数组中值为"null,undefined"的值,返回原数组.function ClearNullArr(arr){ for(var i=0,len=arr.length;i<len;i++){ if(!arr[i]||arr[i]==' '||arr[i]===undefined){ arr.splice(i,1); len--; i--; } } return arr;} var arr5=[,,'skjg',undefin

null == undefined ?

最近在看<JavaScript高级程序设计>一书,书中讲到相等操作符(==)时说,要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,但要记住 null == undefined 会返回 true .的确,在ECMAScipt规范中也是这样定义的,但我认为这样来理解这件事情,似乎有些浮于表面,网上也有很多关于这个问题的文章,下面我希望从一个全新的角度来分析 null 和 undefined ,从而理解两者为何会相等: 1.语义和场景不同 Undefined 和 Nul

JS_数据类型之null,undefined,date(),typeConvert..

今天学的东西主要还是数据类型方面--越学越感觉js这门语言,真的是amazing,very amazing的,总结下 1.先来比较下null与undefined: null:js关键字,表示一个对象,但是为空.因为是对象,typeof(null)返回object,在primitive类型context下使用时:number-->0,string-->"null",bool-->false undefined:不是js关键字,而是window对象的全局属性,(可以用wi

javascript中false值及其常见比较运算

1. ture或者false的值 if判断中会被隐式转换成false的boolean类型的值有 false, 0, undefined , null , '', NaN(not a number) 除此外 其他的值会被认为true, 包括 '0', 'false', 空function, 空数组([]),空对象({}) var a = !!(0);// 等价于 var a = false; var a = !!('0'); // 等价于 var a = true; 2.  falsy值的比较 值