Skip to content

数据类型

977字约3分钟

2024-07-07

数组类型解释

数据类型用来在计算机中标记程序的运算规则

数据类型分类

警告

变量名仅用于演示,实践中不要用a、b、c命名

基本数据类型:数字类型、字符串类型、布尔类型、undefined、null
引用数据类型(复杂类型):对象

数字类型

笼统的讲,最后的值是实数都可算作数字类型

let a = 2728737;
let b = -3.4345456;
let c = 3*3;
let d = Math.sqrt(2);  //根号2

// typeof判断数据类型
typeof(a);
typeof(b);
typeof(c);
typeof(d);

数字类型计算过程按照初等数学运算规则计算,即先乘除再加减,有括号先算里面的

字符串类型

遇到除加号以外的符号,那么计算机先将字符串转换为对应的数字,然后再计算

布尔类型

警告

请不要加上引号

let a = true;
let b = false;
typeof(a);
typeof(b);

其他数据类型

相关信息

由于历史原因,Javascript设计者Brendan Eich(他本人还健在)弄了两个看起来很像的null和undefined,它们都表示空值,但数据类型不同

null

注意

还记得Javascript对大小写敏感吗?不要写成NULL、Null

null 的含义

null 值特指未不存在任何对象值。它是 JavaScript 的原始值之一,且在布尔运算中被视为假值。

换句话说它是一个未创建完成的对象,起到占位作用

undefined

提示

出现undefined说明代码可能存在错误

根据ECMAScript规范,用undefined表示变量未声明就使用、变量未初始化(会产生脏值)、调用函数却不给参数、给对象添加没有的属性、函数没有返回值等,且在布尔运算中被视为假值。

数据类型转化

隐式类型转换

隐式类型转换原理建议翻看Kevin的一次搞懂JavaScript类型隐式转换 - 掘金 (juejin.cn)

ECMAScript 5.1版本(ES5)第九章解释了Javascript会以ToPrimitive(转换为最初值)、ToBoolean(转换为布尔类型)、ToString(转换为字符串)、ToNumber(转换为数字类型)自动处理需要的数据类型

+运算

let a = 1, b = '1';
console.log(a+b);

注意

计算机在数学运算中发生隐式类型转换

let a,b = '1'
console.log(typeof(a-b))

如果加号也希望出现隐式类型转换,将+写在数值的前面

let a = '1'
let b = 1
console.log(+a + b)

布尔值参与运算

console.log(1 == true);
console.log(0 == false);

强制类型转换

相关信息

用户自己强制转换为需要的类型

转换为数字类型

Number()
let year = '2020';
year = Number(year);//转换并再次赋值给year
console.log(typeof(year));
parseInt()

提示

是parse和integer的合写

let mixType = '1.2asdf';
int = parseInt(mixType);
console.log(typeof(int));

parseFloat()

let mixType = '1.2asdf';
float = parseInt(mixType);

//用Number()转换效果一样
console.log(typeof(float));

转换为字符串类型

let movie = 2012;
//方法1
String(movie);
//方法2
movie.toString();

String()和变量名.toString()区别

let a = undefined;
a = String(a);
console.log(typeof(a));

a = a.toString();
console.log(typeof(a));

逻辑运算符短路运算

如果是 && 运算只要遇到 false,就立即短路,不会再执行了,直接返回当前值

如果是 || 运算只要遇到 true,立即短路,不会再执行了,直接返回当前值

|| 短路
console.log(1 || 2);  // 1
console.log(0 || '' || 2 || 3); // 2

数据类型存储

堆和栈来自计算机数据结构

数据类型举例存储方式
简单类型数字、字符串、布尔、undefined
引用类型对象