首先要知道基本数据类型和复杂数据类型都有哪些
基本数据类型:Undefined、Null、String、Number、Boolean、Bigint、Symbol
Undefined的含义是未赋值,如果声明一个变量,没有初始化值,这个变量就是未赋值(就是把undefined赋值了给了变量)
let a
console.log(a) // undefined
null是一个独立的类型,null是一个空对象的指针,所以当我们采用typeof传入一个null的时候会返回一个object
字符串是被括在引号里面,常见的字符串有3种
let str1 = "字符串"
let str2 = '字符串'
let str3 = `字符串`
双引号都是简单的写法,在js语法里面没有区别,反引号是拓展功能,实现我们的变量模板字符串,举个🌰
let str1 = "字符串"
let strname = `上面的str1是一个${str1}`//str1可以随便二次赋值更改
number这个类型代表了整数和浮点数
数字可以有很多操作,比如,乘法 *、除法 /、加法 +、减法 - 等等
数值转换
Number(true) = 1; Number(false) = 0; // 布尔值
Number(123) = 123 // 数值;
Number(null) = 0 // null;
Number(undefined) = NaN // undefined类型;
Number("123") = 123; Number("0123") = 123; Number("1.1") = 1.1; Number(" ") = 0; Number("Hello") = NaN; // 字符串
对象:调用 valueOf()方法,并按照上述规则转换返回的值。如果转换结果是 NaN,则调用 toString()方法,再按照转换字符串的规则转换。
Boolean包含两个值 true和false,属于逻辑类型
注意:不同类型与布尔值之间存在隐式转换。非空字符串、非0、任意对象会被转换为 true。空(’’)、零(0、NaN)、空对象(null)、undefined会被转换为 false。
当我们需要很大的数字的时候,精确到类似于时间戳那么大的数值,无法用number显示出来,将 n 附加到整数字段的末尾来创建 BigInt 值。
// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 4684567890123456789012345678901234567890n;
Symbol是唯一、是不变的、用途是为了确保对象使用唯一的标识符,避免属性冲突。
用法:
Symbol() 函数初始化的时候,可以传入一个字符串对符号做描述
let strSymbol = Symbol('str')
因为是唯一的,所以这两个看起来相同,实则不同
const strSymbol1 = Symbol('str')
const strSymbol2 = Symbol('str')
console.log(strSymbol1 === strSymbol2) // false
//使用for可以变得相同
const strSymbol1 = Symbol.for('str')
const strSymbol2 = Symbol.for('str')
console.log(strSymbol1 === strSymbol2) // true
复杂数据类型:Object、Function、Array、Date、Map、Set、new RegExp
对象是用来存放键值对和复杂的实体
使用{…}创建对象,里面的结构如下
const user = {
name: 'wanzi',
age: 21
}
// 第一个的键是 "name",值是 "wanzi"。
// 第二个的键是 "age",值是 21
// [key]: value
name是key值(是一个字符串),我们通常叫属性名,后面是value(可以为任意类型的值)。
我们可以用两种语法创建一个空对象,通常我们会采用花括号的方法来进行创建。
const obj = new Object()//构造函数的语法
const obj = {} //字面量的语法
添加和删除一个键值对
//添加
user.beautiful = true
const user = {
name: 'wanzi',
age: 21,
beautiful: true
}
// 删除
delete user.beautiful
const user = {
name: 'wanzi',
age: 21
}
//使用词语当做键名
delete user.beautiful
const user = {
name: 'wanzi',
age: 21,
'like you': true
}
!!!注意
const 定义的user能修改? 可以的
const user = {
name: 'wanzi'
}
user.name = 'bigWanzi'
console.log(user.name) // bigWanzi
cons只对user进行了固定的值,并没有控制里面的内容,所以当我们去改变里面的内容的时候是没有问题的,但是user = 整体替换,就会出现问题。