null 与 undefined

JavaScript 中一共有 5 种基本类型,分别是 String、Number、Boolean、Null 和 Undefined 。前 3
种都比较好理解,后面两种就稍微复杂一点。 Null 类型只有一个值,就是 null ; Undefined 类型也只有一个值,即 undefined 。
null 和 undefined 都可以作为字面量(literal)在 JavaScript 代码中直接使用。

null 与对象引用有关系,表示为空或不存在的对象引用。当声明一个变量却没有给它赋值的时候,它的值就是 undefined 。

undefined 的值会出现在如下情况:

从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。
一个
function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。

JavaScript 中的 function 可以声明任意个形式参数,当该 function
实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。

关于 null 和 undefined 有一些有趣的特性:

如果对值为 null 的变量使用 typeof 操作符的话,得到的结果是 object ;而对 undefined 的值使用 typeof,得到的结果是
undefined 。如 typeof null === "object";typeof undefined === "undefined"
null
== undefined,但是 null !== undefined
if ("" || 0)
对于 if 表达式,大家都不陌生。
JavaScript 中 if 后面紧跟的表达式的真假值判断与其它语言有所不同。具体请看表 1。

表 1. JavaScript 中的真假值
类型 真假值
Null 总是为假(false)
Undefined
总是为假(false)
Boolean 保持真假值不变
Number +0,-0 或是 NaN 的时候为假,其它值为真
String
空字符串的时候为假,其它值为真
Object 总是为真(true)

从表 1中可以看到,在 JavaScript 中使得 if 判断为假的值可能有 null、undefined、false、+0、-0、NaN
和空字符串("")。

== 与 ===

JavaScript 中有两个判断值是否相等的操作符,== 与 === 。两者相比,== 会做一定的类型转换;而 ===
不做类型转换,所接受的相等条件更加严格。

=== 操作符的判断算法

在使用 === 来判断两个值是否相等的时候,如判断x===y,会首先比较两个值的类型是否相等,如果不相等的话,直接返回 false 。接着根据 x
的类型有不同的判断逻辑。

如果 x 的类型是 Undefined 或 Null,则返回 true 。
如果 x 的类型是 Number,只要 x 或 y 中有一个值为
NaN,就返回 false ;如果 x 和 y 的数字值相等,就返回 true ;如果 x 或 y 中有一个是 +0,另外一个是 -0,则返回 true

如果 x 的类型是 String,当 x 和 y 的字符序列完全相同时返回 true,否则返回 false 。
如果 x 的类型是
Boolean,当 x 和 y 同为 true 或 false 时返回 true,否则返回 false 。
当 x 和 y 引用相同的对象时返回
true,否则返回 false 。

== 操作符的判断算法

在使用 == 来判断两个值是否相等的时候,如判断x==y,当 x 和 y 的类型一样的时候,判断逻辑与 === 一样;如果 x 和 y 的类型不一样,==
不是简单的返回 false,而是会做一定的类型转换。

如果 x 和 y 中有一个是 null,另外一个是 undefined 的话,返回 true 。如null == undefined。
如果 x 和
y 中一个的类型是 String,另外一个的类型是 Number 的话,会将 String 类型的值转换成 Number 来比较。如3 == "3"。

如果 x 和 y 中一个的类型是 Boolean 的话,会将 Boolean 类型的值转换成 Number 来比较。如true == 1、true ==
"1"
如果 x 和 y 中一个的类型是 String 或 Number,另外一个的类型是 Object 的话,会将 Object
类型的值转换成基本类型来比较。如[3,4] == "3,4"
需要注意的是 == 操作符不一定是传递的,即从A == B, B == C并不能一定得出A
== C。考虑下面的例子,var str1 = new String("Hello"); var str2 = new String("Hello");
str1 == "Hello"; str2 == "Hello",但是str1 != str2。

Array

JavaScript 中的数组(Array)和通常的编程语言,如 Java 或是 C/C++ 中的有很大不同。在 JavaScript
中的对象就是一个无序的关联数组,而 Array 正是利用 JavaScript 中对象的这种特性来实现的。在 JavaScript 中,Array
其实就是一个对象,只不过它的属性名是整数,另外有许多额外的属性(如 length)和方法(如 splice)等方便地操作数组。

创建数组

创建一个 Array 对象有两种方式,一种是以数组字面量的方式,另外一种是使用 Array 构造器。数组字面量的方式通常为大家所熟知。如var
array1 = [2, 3, 4];。使用 Array 构造器有两种方式,一种是var array2 = new Array(1, 2,
3);;另外一种是var array3 = Array(1, 2, 3);。这两种使用方式的是等价的。使用 Array
构造器的时候,除了以初始元素作为参数之后,也可以使用数组大小作为参数。如var array4 = new Array(3);用来创建一个初始大小为 3
的数组,其中每个元素都是 undefined 。

Array 的方法

JavaScript 中的 Array 提供了很多方法。

push和pop在数组的末尾进行操作,使得数组可以作为一个栈来使用。
shift和unshift在数组的首部进行操作。

slice(start,
end)用来取得原始数组的子数组。其中参数start和end都可以是负数。如果是负数的话,实际使用的值是参数的原始值加上数组的长度。如var array =
[2, 3, 4, 5]; array.slice(-2, -1);等价于array.slice(2, 3)。

splice是最复杂的一个方法,它可以同时删除和添加元素。该方法的第一个参数表示要删除的元素的起始位置,第二个参数表示要删除的元素个数,其余的参
数表示要添加的元素。如代码var array = [2, 3, 4, 5]; array.splice(1, 2, 6, 7,
8);执行之后,array中的元素为[2, 6, 7, 8, 5]。该方法的返回被删除的元素。

0、""、NaN、null和defined都是假的
。剩下的东西都是真的。

换句话说,零、null、NaN和空字符串天生就是假
;而其他的天生就是真 。

null 与 undefined,码迷,mamicode.com

时间: 2024-10-11 12:43:16

null 与 undefined的相关文章

javascript学习笔记 null和undefined

============================================ null是javascript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”.但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字.字符串和对象是“无值”的. JavaScript还有第二个值来表示值的空缺.用未定义的值表示更深层次的“空值”.它是变量的一个取

JavaScript中null和undefined小结

一. 前言 因为对javascript中的null和undefined有些分不清楚,因此在试验之后进行一下小结. 二. 源码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title></title>

Null 和 Undefined

当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单,行为符合常识.但是,本文将更多聚焦独特的原始数据类型Null和Undefined,是什么让他们如此相似,却又似是而非. 理解Null和Undefined 在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值.换句话说,这用来表示"无值(no value)".虽然相似,undefined实际上代表了不存在的值(n

JavaScript中null和undefined

JavaScript的数据类型大体分为两类:原始类型和对象类型.其中,原始类型包括数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null(空)和undefined(未定义),它们不是数字.字符串和布尔值,它们通常分别代表各自特殊类型中唯一的成员. null null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object"(如下图),所以说,也可以将null认为是一个特殊的对象值,它的含义是“

160304-02、JS 中如何判断null 和undefined

JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断. 以下是不正确的用法: var exp = undefined;if (exp == undefined){    alert("undefined");} exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样.注意:要同时判断 undefined 和 null 时可使用本法.

JavaScript中的null和undefined

null :表示无值;undefined : 表示一个未声明的变量,                或已声明但没有赋值的变量,                或一个并不存在的对象属性. ==运算符将两者看作相等.如果要区分两者,要使用===或typeof运算符. 使用if (!object){}两者就都包含了 补充:2006.12.6var obj = "aaa";var nullobj; if (obj == null || obj == undefined || (!obj) ){

javascript 中null,undefined和空的应用

function demo(){     alert(typeof a == "undefined");//true } function demo(){     alert(a == null);//console error a is not defined } function demo(a){     alert(typeof a == "undefined");//true     alert(a == null);//true } function de

JavaScript中null和undefined的总结

先说null,它表示一个特殊值,常用来描述“空值”.对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”(感觉怪怪的).实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字.字符串和对象是“无值”的. JavaScript还有第二个值来表示值的空缺,就是undefined啦,用未定义的值表示更深层次的“空值”.undefined出现有4种情况:①变量声明但没有初始化时②要查询的对象属性或数组的元素不存在时③

V8 的 typeof null 返回 &quot;undefined&quot; 的 bug 是怎么回事

1997 年,IE 4.0 发布,带来的众多新特性中有一个对未来“影响深远”的 DOM API:document.all.在随后的 6 年里,IE 的市场占有率越来越高,直到 2003 年的 95%. 在这段时间里,产生了两种成千上万的页面.第一种:IE only 的页面,由于超高的市场占有率,开发人员觉得根本不需要考虑兼容性,于是直接使用 document.all,比如: document.all(foo).style.visibility = "visible" 甚至很多网站直接在

说说null和undefined的那些事

网上有很多关于null和undefined的解释,那么今天我们也来简单的聊聊null与undefined的话题,以便解开它们的神秘面纱,当然这这是简单的介绍,在日后会有相应的更新. 为什么用==的时候undefined会等于null 如果你知道javascript有隐式转换的话,那么我想,你应该知道是怎么回事了,在undefined与null比较的时候,undefined会被转换成false,null同样也是fasle,如果将null转换成数字,null就是0,当然这不是本章要说的重点.接着说n