javascript的null、undefined和布尔数据类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wulove52/article/details/84964313

javascript中  有null、undefined 在使用typeof 时候 

console.log(typeof null); //object
console.log(typeof undefined) //undefined

nullundefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefinednull,老实说,语法效果几乎没区别。

两个类型到底有什么区别,什么场景使用是个头疼的问题。

一、概述

//1.在if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者相等。

var a = undefined;
// 或者
var a = null;

if (!undefined) {
  console.log('undefined is false');
}
// undefined is false

if (!null) {
  console.log('null is false');
}
// null is false

undefined == null
// true

从上面代码可见,两者的行为是何等相似!谷歌公司开发的 JavaScript 语言的替代品 Dart 语言,就明确规定只有null,没有undefined

1995年 JavaScript 诞生时,最初像 Java 一样,只设置了null表示"无"。根据 C 语言的传统,null可以自动转为0

Number(null) // 0
5 + null // 5

Number(undefined) // NaN
5 + undefined // NaN

但是,JavaScript 的设计者 Brendan Eich,觉得这样做还不够。首先,第一版的 JavaScript 里面,null就像在 Java 里一样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果null自动转为0,很不容易发现错误。

因此,他又设计了一个undefined。区别是这样的:null是一个表示“空”的对象,转为数值时为0undefined是一个表示"此处无定义"的原始值,转为数值时为NaN

二、用法和含义

对于nullundefined,大致可以像下面这样理解。

null
1.通过id获取元素如果获取不到内容,那么默认返回值是null
2.如果要销毁对象的堆内存,那么就给对象赋值null
3.正则进行捕获,捕获不到内容,那么返回值就是null;

undefined
1.如果变量只声明,没有赋值,那么默认存储的值就是undefined;
2.如果获取对象的属性名和对应的属性值,如果属性名不存在,获取的就是undefined
3.如果函数没有对象的实参,那么形参默认存储的值就是undefined
4.如果函数没有return,那么默认的返回值也是undefined
// 变量声明了,但没有赋值
var i;
i // undefined

// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
  return x;
}
f() // undefined

// 对象没有赋值的属性
var  o = new Object();
o.p // undefined

// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面我们在说一说布尔数据类型(boolean)

布尔类型

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

关于布尔类型的转换是要说的重点,因为这确实不符合我们之前学习语言转换的规律

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)

总结:请记住只有以上6种情况会转换为false

console.log(Boolean(0));   //false
console.log(Boolean(NaN)); //false
console.log(Boolean("")); //false
console.log(Boolean('')); //false
console.log(Boolean(" ")); //true
console.log(Boolean("0")); //true
console.log(Boolean(null)); //false
console.log(Boolean(undefined)); //false
console.log(Boolean([])); //true
console.log(Boolean({})) //true

猜你喜欢

转载自blog.csdn.net/wulove52/article/details/84964313