JavaScript基础知识之数据类型

简介: 本文为 JavaScript 基础知识之 数据类型的简单介绍

变量

合法的变量命名规则:

  • 大小写字母、数字、 $_ 的组合
  • 不能用数字开头。
  • 不能是关键字/保留字

javascript基础知识(在javascript中 = 是赋值符号)

var a;       // 声明变量
var s = 2;   // 声明变量并赋值

JavaScript 中有 11 种数据类型

  • null: 空值
  • undefined:未定义
  • string:字符串
  • number: 数字
  • boolean:布尔
  • symbol:符号
  • bigNInt:大数
  • map:map
  • weakMap:weakMap
  • set:集合
  • weakSet:weakSet

其中 symbolbigNumbermapweakMapsetweakSet 是es6及其以后新增的数据类型

Number

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带

123; // 整数123
0.456; // 浮点数0.456
1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了Number所能表示的最大值时,就表示为Infinity
Boolean
布尔(逻辑)只能有两个值:true 或 false

var x=true
var y=false

String

字符串是存储字符(比如 "Bill Gates")的变量。

字符串可以是引号中的任意文本。您可以使用单引号或双引号:

var answer="Nice to meet you!";
var answer="He is called 'Bill'";
var answer='He is called "Bill"';

null 和 undefined

null 表示一个“空”的值,它和 0 以及空字符串 '' 不同, 0 是一个数值, '' 表示长度为 0 的字符串,而 null 表示“空”。

在其他语言中,也有类似 JavaScript 的 null 的表示,例如 Java 也用 null,Swift 用 nil,Python 用 None 表示。但是,在JavaScript中,还有一个和 null 类似的 undefined,它表示“未定义”。

JavaScript 的设计者希望用 null 表示一个空的值,而 undefined 表示值未定义。事实证明,区分两者的意义不大。大多数情况下,我们都应该用 nullundefined 仅仅在判断函数参数是否传递的情况下有用。

Array

数组是一组按顺序排列的集合,集合的每个值称为元素。JavaScript的数组可以包括任意数据类型

例如:

[1, 2, 3.14, 'Hello', null, true];

上述数组包含 6 个元素。数组用 [] 表示,元素之间用 , 分隔。

另一种创建数组的方法是通过 Array() 函数实现:

new Array(1, 2, 3); // 创建了数组[1, 2, 3]

然而,出于代码的可读性考虑,强烈建议直接使用 []

数组的元素可以通过索引来访问。请注意,索引的起始值为 0

var arr = [1, 2, 3.14, 'Hello', null, true];
arr[0]; // 返回索引为0的元素,即1
arr[5]; // 返回索引为5的元素,即true
arr[6]; // 索引超出了范围,返回undefined

Object

JavaScript的对象是一组由键-值组成的无序集合,例如:

var person = {
   
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
};

JavaScript 对象的 键(key) 都是字符串类型,值可以是任意数据类型。上述 person 对象一共定义了 6 个键值对,其中每个键又称为对象的属性,例如: personname 属性为 'Bob'zipcode 属性为 null

要获取一个对象的属性,我们用 对象变量.属性名 或者 对象变量[属性名] 的方式:

person.name;      // 'Bob'
person["name"];   // 'Bob'

map

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。

为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,MapObject 更合适。

const map = new Map();
const obj = {
   p: 'Hello World'};

map.set(obj, 'content')
map.get(obj) // "content"

map.has(obj) // true
map.delete(obj) // true
map.has(obj) // false

weakMap

weakMap结构与Map结构类似,也是用于生成键值对的集合。

weakMapMap 的区别有三点。

  • weakMap只接受对象(null 除外)和 Symbol 值作为键名,不接受其他类型的值作为键名。
      const map = new WeakMap();
      map.set(1, 2) // 报错
      map.set(null, 2) // 报错
      map.set(Symbol(), 2) // 不报错
    
  • weakMap的键名所指向的对象,不计入垃圾回收机制。
  • weakMap 没有遍历方法,也没有 size 属性。

set

它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成 Set 数据结构。

const s = new Set();

[1, 3, 5, 4, 5, 2, 2, NaN, NaN].forEach(x => s.add(x));

for (let i of s) {
   
  console.log(i); // 1 3 5 4 2 NaN
}
// 最终的 set的值: 1 3 5 4 2 NaN
// NaN 只有一个则表明在 Set 内部,两个`NaN`是相等的。

weakSet

WeakSet 结构与 Set 类似,也是不重复的值的集合。

但是,它与 Set 有两个区别。

  • WeakSet 的成员只能是对象和 Symbol 值,而不能是其他类型的值。
    const wset = new WeakSet();
    wset.add("a") // 报错
    wset.add(Symbol()) // 不报错
    
  • weakSet 中的对象都是弱引用,即垃圾回收机制不考虑 weakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。
相关文章
|
3月前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
142 59
|
2天前
|
存储 JavaScript 前端开发
JavaScript中的数据类型以及存储上的差别
通过本文的介绍,希望您能够深入理解JavaScript中的数据类型及其存储差别,并在实际编程中灵活运用这些知识,以提高代码的性能和稳定性。
13 3
|
26天前
|
存储 JavaScript 前端开发
js中的数据类型
JavaScript 中的数据类型包括五种基本类型(String、Number、Undefined、Boolean、Null)和三种引用类型(Object、Array、Function,以及ES6新增的Symbol)。基本类型直接存储值,引用类型存储的是指向实际数据的内存地址。了解它们的区别对于掌握 JavaScript 的变量赋值和函数传参至关重要。
20 1
|
2月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
102 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
2月前
|
JavaScript 前端开发 开发者
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
【干货拿走】JavaScript中最全的数据类型判断方法!!!!
25 1
|
2月前
|
存储 JavaScript 前端开发
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
JavaScript数据类型全解:编写通用函数,精准判断各种数据类型
41 0
|
3月前
|
JavaScript 前端开发
JavaScript基础知识-基本数据类型和引用数据类型
关于JavaScript基础知识的文章,主要介绍了基本数据类型和引用数据类型。
44 2
JavaScript基础知识-基本数据类型和引用数据类型
|
3月前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
63 2
|
4月前
|
JavaScript 前端开发
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
这篇文章是JavaScript基础与实战教程的第一部分,涵盖了JavaScript的基本语法、标识符、数据类型以及如何进行强制类型转换,通过代码示例介绍了JS的输出语句、编写位置和数据类型转换方法。
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
|
4月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
427 1