数据类型
JavaScript 语言中的每个值都属于特定的数据类型。 JavaScript数据类型,有六种类型。 (ES6 添加了第七个 Symbol
类型值)
- 数字:整数和小数(例如
1
和3.14
)。 - string(字符串):文本(如
Hello World
)。 undefined
:表示“未定义”或不存在,即这里暂时没有价值,因为目前还没有定义。null
:表示空值,即这里的值为空。- object(对象):各种值的集合。
true
Boolean(布尔):表示真或假的两个特殊值,即true
(真)和false
(假)。
一般将数值、字符串、三种类型称为布尔值。 原始类型 (primitive type) ,即是数据最基本的类型,不能再进一步划分。
对象被称为值合成类型(复杂类型),因为对象往往是几个原始类型值的组合,可以认为是。存储各种值的Container。对于undefined
和null
,一般认为是两个特殊值。
对象是最复杂的数据类型,可以分为三个子类型。
- 狭义的物体
- 行
- 功能
狭义上的对象和数组是两种不同的数据组合方式,除非另有说明。功能实际上是一种处理数据的方式。 JavaScript 将其视为可以分配给变量的数据类型。这为编程带来了极大的灵活性,并为“函数式编程”JavaScript 的基础知识奠定了基础。
摘要:JavaScript数据类型分为七种:number
、string
、Boolean
、undefined
、null
、null
、‾❀、‾等6种类型Symbol
.Symbol
其中原始类型三种:
number
、string
、Boolean
特殊价值,两种类型:
null
,undefined
对象称为合成类型,共有三种类型:
object
、array
、function
Es6 新:
symbol
null 和 undefined 的区别
总结
null
和 undefined
可以表示“无”并且具有相同的含义。将变量分配给 undefined
或 null
在语法上几乎没有区别。
var a = undefined;
// 或者
var a = null;
在上面的代码中,变量a
被分配给undefined
和null
。这两种写法的效果几乎是一样的。
在语句if
中,它会自动更改为false
,并且相等运算符(==
)甚至会立即报告两者相同。
if (!undefined) {
console.log('undefined is false');
}
// undefined is false
if (!null) {
console.log('null is false');
}
// null is false
undefined == null
// true
从上面的代码可以看出,这两个人是什么样的行为啊! Dart语言是Google开发的JavaScript语言的替代品,明确表示只有null
,没有undefined
!
既然含义和用法是一样的,为什么要把两个值设置在一起呢?这不会增加不必要的复杂性和初始障碍吗?这与历史原因有关。
1995 年 JavaScript 诞生时,和 Java 一样,只有 null
被设置为代表“无”。按照C语言传统,null
可以自动改为0
。
Number(null) // 0
5 + null // 5
上面的代码中,当null
转换为数字时,它会自动变为0。
然而,JavaScript 设计师 Brendan Eich 认为这还不够。首先,在 JavaScript 的第一个版本中,null
被视为与 Java 中一样的对象。 Brendan Eich 认为代表“None”的值最好不是一个对象。其次,当时的 JavaScript 不包含任何错误处理机制。 Brendan Eich 觉得如果 null
自动转换为 0,就很难发现错误了。
于是,他又计划了一个undefined
。不同的是:null
是一个物体,代表“空”,转换成数字就是0
; undefined
是一个原始值,代表“这里没有定义”,转换为数值后,就变成了 NaN
。
Number(undefined) // NaN
5 + undefined // NaN
用法和含义
对于null
和undefined
,可以大致理解如下。
null
代表空值,即这里的值当前为空。调用函数时,如果参数没有设置任何值,则可以传入null
,表示参数为空。例如,该函数接受引擎抛出的错误作为参数。如果运行过程中没有错误,该参数会继续到null
,表示没有错误。
undefined
表示“未定义”,以下是产生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
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。