JavaScript提供了不同的数据类型来保存不同类型的值,主要有两种类型的数据类型:原始类型和引用类型。

原始类型(值类型)

  • Undefined undefined
  • Null null
  • Boolean true
  • String 'hello'
  • Number 123
  • Symbol(这里先不做介绍)

引用类型(对象类型)

  • Object:由以上几种基本类型组成,而且对象里面还可以包含对象
var obj = {};
<!-- 原始类型变量的包装类型如下 -->
var bool = new Boolean(true);
var str = new String("hello");
var num = new Number(1);
var obj0 = new Object();

MDN所讲,JavaScript 是一种弱类型或者说是一门动态语言。这意味着你不用提前声明变量的类型,而是在程序运行过程中,类型会被自动确定。

当然,原始类型和引用类型会有一些区别

原始类型的值是直接储存在栈(Stack)内存中的,而引用类型的数据是把 Heap内存地址存在 Stack 里,所以对已引用类型的复制其实只是复制了相同的地址而非实际的变量值。

Number

为整型直接量,浮点型直接量,十六进制直接量(0x-),八进制直接量(0-)等 出现场合:

  • 1024
  • 3.14
  • 1.2e5
  • 0x10
  • 0o377

除以上常规数字外,还有所谓的“特殊数值”,它们也属于这种数据类型:Infinity-InfinityNaN

String

JavaScript中的字符串必须用引号括起来,有3种类型的引号 出现场合:

var str = "Hello, world!";  //双引号
var str = 'Hello, world!'; //单引号
var str = `Hello, world!`; //反引号

双引号和单引号是“简单”引号,它们在JavaScript中没有区别,但由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号。

反引号是“扩展功能”的引用,允许我们通过将变量和表达式包装在$ {…}中来将它们嵌入到字符串中,比如:

var name = "miqilin";

// embed a variable
console.log( `Hello, ${name}!` ); // Hello, miqilin!

// embed an expression
console.log( `the result is ${1 + 2}` ); // the result is 3

加反引号后计算$ {...}内的表达式,结果会成为字符串的一部分。 我们可以在其中放置任何东西:像名称这样的变量或像1 + 2这样的算术表达式或更复杂的东西。

但请注意,这只能在反引号中完成。 其他形式没有这种嵌入功能!

console.log( "the result is ${1 + 2}" ); // the result is ${1 + 2} (双引号不生效)

Boolean

布尔类型只有两个值:truefalse 出现场合:

  • 条件语句导致的系统执行的隐式类型转换 if(隐式转换){}
  • 字面量或变量定义 var bool = true;
  • 也出现在比较的结果 :
var isGreater = 4 > 1;

console.log( isGreater ); // true (the comparison result is "yes")

Null

null 出现场合:

  • 获取不存在的对象 document.getElementById('not-exist-element')

在JavaScript中,null不是“对不存在的对象的引用”或者像其他语言中的“空指针”。它只是一个特殊值,代表“无”,“空”或“未知值”。

Undefined

undefined的含义是“未赋值” 出现场合:

  • 变量声明了,但没赋值 var obj;
  • 获取对象不存在的属性 var obj = {x: 0}; obj.y;
  • 无返回值函数的执行结果 function f(){}; var obj = f();
  • 调用函数时,应该提供的参数没有提供 function f(i){console.log(i)}; f();
  • void(expression)

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

undefined == null  // true

但也有一丝区别,区别是这样的:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示”此处无定义”的原始值,转为数值时为NaN

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

Object

属性集合 出现场合:

var obj = { name: "miqilin" };

var obj = new Cat();

var obj = new function() {
this.sound = "wow";
}

但请注意,我们还没有提到过ArrayDate,甚至是函数,因为正式地说,它们都是对象类型。

本人Github链接如下,欢迎各位Star

https://github.com/miqilin21/miqilin21.github.io



JavaScript      JavaScript 数据类型

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!