Javascript-数据类型有哪些??(请问js中的基本数据类型有几种)
字面量
字面量
( literal )
是用于表达一个固定值的表示法,又叫常量
。字面就是所见即所得,js 程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少。
可以用于表示固定值,比如:数字、字符串、undefined、布尔类型的字面值等。
- 数字 字面量:8 9 10 - 字符串 字面量: "大前端" - 布尔 字面量:true,false 复制代码
- 数字 字面量
这里的数字就是数学意义上的数字。
数字字面量区分:
整数字面量
、浮点数字面量(小数)
、特殊值
。书写时直接书写字面量,不需要添加任何辅助符号。
> 整数
整数字面量写法区分进制。
整数可以被表示成
十进制(基数为10)
、八进制(基数为8)
以及十六进制(基数为16)
。在进行算术计算时或者参与程序,所有八进制和十六进制的数字都会被转换成十进制。
特殊的情况 八进制中,如果以0开头,每个位数上有超过0-7之间的数字出现,也就是8/9,强制忽视前面的0,直接将后面数字当做十进制。
十进制: 是最基本的数值字面量格式,可以直接在代码中输入。 逢十进一,每个位数只能是0-9之间的数字。 console.log(10); console.log(-10); 10 -10 复制代码
八进制: 字面值必须带前导0、0O、0o 。八进制整数只能包括数字0-7。 逢八进一,每个位数上只能是0-7之间的数字,而且必须添加前缀,0、0O、0o。 console.log(0100); console.log(01000); 0(代表8进制) 0(代表8进制) 1(代表64位)8*8=64 1(代表8*8*8位)=512 0(代表8位) 0*8=0 0(代表64位)0*64=0 0(代表个位)0*1=0 0(代表8位)0*18=0 0(代表个位)0*1=0 复制代码
十六进制: 前缀是0x或0X。后面可以包含数字(0-9)和字母a~f或A~F。 逢十六进一,每个位数上必须是0-9、a-f之间的符号,必须写前缀,0x、0X开头。 console.log(0x100); console.log(0x110); 0x (代表十六进制) 0x (代表十六进制) 1(代表16的2次方)16*16=256 1(代表16的2次方)16*16=256 0(代表16位) 0*8=0 0(代表16位)1*16=0 0(代表个位)0*1=0 0(代表个位)0*1=0 复制代码
> 浮点数
就是数学概念中的小数,包含:整数、小数点、小数部分。
不区分进制,都是十进制下的数字。
PS: 如果浮点数是0 < 1的,可以省略小数点前面的0不写。
浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数. 例如:
0.1 + 0.2
; 结果不是 0.3,而是:0.30000000000000004。
console.log(1.23); 1.23 console.log(-1.23); -1.23 console.log(0.618); 0.618 console.log(.618); .618 console.log(1.2e4); 12000 console.log(1.2e-4); 0.00012 console.log(0.1 + 0.2); 0.30000000000000004 复制代码
> Infinity无穷
Infinity:无穷的意思。
由于计算机计算能力有限,如果高于最大计算值直接显示为正无穷 Infinity,如果低于最小
计算值直接显示为 -Infinity。
Infinity本身就是一个数字。
最小值: Number.MIN_VALUE,这个值为: 5e-324
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity 无穷小:-Infinity
console.log(Number.MIN_VALUE); 5e-324 console.log(Number.MAX_VALUE); 1.7976931348623157e+308 console.log(-5e789); -Infinity console.log(5e789); Infinity console.log(Infinity); Infinity 复制代码
> NaN 不正常数
NaN: not a number表示不是一个正常的数,但是还是一个 Number 类型的数字。这个数字 没办法用前面的表示方法表示。
NaN与任何值都不相等,包括他本身。
isNaN():判断一个数据是不是一个NaN。
<script> // NaN 不是一个正常的数 console.log(0 / 0); NAN console.log(isNaN(0 / 0)); true console.log(isNaN(23)); false </script> 复制代码
- 字符串 字面量
字符串是由任意个数的有序或无序的字符组成的串,类似人类的语言,在 JS 中有自己特殊的写法。
组成:字母、汉字、特殊符号、空白等。
字符串字面量写法:是用
一对单引号(' ')
或双引号(“ ”)
及引号内的字符
构成,引号中间的字符可以有任意多个,也可以是没有字符的空字符串
。PS:字符串中如果字符包含了双引号,则其外部应该由单引号标示,反之相同。
<script> // 双引号“”和单引号''都可以 console.log(" "); console.log(' '); // 字符串的字面量 console.log("这是一个'字符'串#%^&"); 这是一个'字符'串#%^& console.log('a"b"c'); a"b"c console.log('123'); 123 console.log(' '); (空字符串不显示) console.log(''); (空字符串不显示) </script> 复制代码
转义符`
在字符串中可以使用转义符 \ 加普通字母,替代一些特殊字符\
\n 换行\
\t Tab制表
字符串中可以使用转义符 \ 将特殊功能字符变为普通字符。
\' 单引号
\" 双引号
\\ 反斜杠
<script> // 换行\n console.log("清明时节雨纷纷,\n路上行人欲断魂。"); // 错误写法-直接换行 console.log("清明时节雨纷纷, 路上行人欲断魂。"); // 缩紧\t console.log("\t清明时节雨纷纷,路上行人欲断魂。"); // 错误写法-直接空格缩紧 console.log(" 清明时节雨纷纷,路上行人欲断魂。"); // 转为普通字符 console.log("这是一个\"字符串\"#%^&"); console.log("C:\\Users\\admin\\Desktop\\code"); </script> 复制代码
变量
变量
(variables)
是计算机内存中存储数据的标识符
,根据变量名称可以获取到内存中存储的数据。变量相当于一个容器,内部可以存储任意类型的数据,使用变量时,用的是内部存储的数据。
使用变量可以方便的获取或者修改内存中的数据。
变量声明
变量声明又叫做定义变量、创建变量。
变量在使用前,必须先有定义,如果没有定义,会出现引用错误。
定义方法: 使用一个 var 的关键字进行定义,后面必须加一个空格,空格后面自定义变量名。
<script> // 使用变量a未定义 console.log(a); </script> Uncaught ReferenceError: a is not defined 未捕获的 ReferenceError:a 未定义 复制代码
<script> // 先定义变量 var a; var name; var n1; var o_o; var 2r; 数字不能作为开头 Uncaught SyntaxError: Invalid or unexpected token var var; var 是关键字 Uncaught SyntaxError: Unexpected token 'var' // 驼峰命名法 var userName; var userPassword; </script> 复制代码
变量的命名规则和规范
规则 - 必须遵守的,不遵守会报错 - 由字母、数字、下划线、$ 符号组成,`不能以数字开头`。 - `字母区分大小写`,A 和 a 表示不同。 - `不能是关键字和保留字`,关键字指的是js中有特殊功能的小词语,比如 var、for 等; - 保留字指的是现在没有特殊功能,但是将来新语法中有可能作为关键字使用。 规范 - 建议遵守的,不遵守不会报错 - 变量名必须有意义 - 遵守`驼峰命名法`。多个单词组合而成的,第一个单词首字母小写,后面单词的首字母需要大写。 例如:userName、userPassword 复制代码
变量赋值
- 变量定义之后,初始时没有进行赋值,内部有一个默认存储的值叫 undefined(未定义), 表示变量内部未赋值,可以存储数据了。 - 变量赋值的方式:通过等号 = 赋值,等号右边的值赋值给左边的变量。 - 注意:书写时,等号 = 两侧习惯书写一个空格。 复制代码
<script> // 定义变量 var a; // 使用变量 console.log(a); 控制台显示变量-初始值undifined var a; // 变量赋值 a = 1; // 使用变量 console.log(a); 控制台显示变量-1 </script> 复制代码
变量赋值的情况1:
变量赋值时: 内部可以存储任意类型的数据,甚至是一个变量。赋值过程中,等号右侧的 变量使用的是存储的数据。
等号左变右不变。
<script> // 定义变量 var a; // 变量赋值 a = 1; var b; b = a; //a 在参与给 b 赋值的过程中,相当于在使用 a 变量,用的就是内部存储的数据 // 使用这个变量 console.log(a); console.log(b); // 定义变量 var a; // 变量赋值 a = 1; var b; b = a + 1; //变量参与赋值,等号左变右不变 // 使用这个变量 console.log(a); console.log(b); </script> 复制代码
变量赋值的情况2:
变量的赋初值过程可以与声明过程写在一起。
<script> a = "hello"; console.log(a); </script> 复制代码
变量赋值的情况3:
变量内部的值,可以通过多次赋值的方法,进行更改。
变量一次定义,可以多次等号赋值。
<script> // 变量定义时,同时赋初始值 var a = 2; // 通过多次赋值的方式改变内部的数据 a = "hello"; a = a + 2 console.log(a); </script> 复制代码
变量赋值的情况4:
一个关键字 var 可以同时定义多个变量,并且都赋初值。多个变量之间用逗号进行分隔,最 后一个变量后面使用分号进行结尾。
<script> // 一个 var 关键字可以同时定义多个变量 var a = 1, b = 2, c = 3; console.log(a + b + c); </script> 复制代码
数据类型
简单数据类型
- Number 数字类型 - String 字符串类型 - undefined undefined类型 - Boolean 布尔类型 - null null类型 另外,还有复杂数据类型 - Object 对象类型,后期课程详细介绍 复制代码
Number 类型
数字类型,不区分整数、浮点数、特殊值,都是 Number 类型。
String 类型
字符串类型,所有的字符串都是 String 类型。
Boolean 类型
Boolean 字面量: 只有 true 和 false 两个字面量的值,必须是
小写
字母。计算机内部存储:true为1,false为0
Undifined 类型
undefined本身是一个数据,表示
未定义
。变量只声明的时候值默认是 undefined。
Null 类型
null本身是一个数据。
从逻辑角度,null 值表示一个
空对象指针
。如果定义的变量准备在将来用于保存对象,最好将该变量初始化为 null。
检测数据类型
使用 typeof 的方法进行数据检测。
检测方式: 在 typeof后面加小括号 () 执行,将要检测的数据放在小括号内部。
<script> //“直接写只是返回一个结果,但这个结果本身不具备输出语句的功能” (typeof(2)); // 检测字面量的数据类型 console.log(typeof(2)); Number console.log(typeof(2.4)); Number console.log(typeof(Infinity)); Number console.log(typeof(NaN)); Number console.log(typeof("字符串")); String console.log(typeof(undefined)); Undifined console.log(typeof(true)); Boolean console.log(typeof(false)); Boolean console.log(typeof(null)); object </script> 复制代码
也可以将 typeof 作为关键字,后面加空格,空格后添加数据的方式,检测数据。
<script> console.log(typeof 67); Number // 推荐使用带( ) console.log(typeof(67 + 78)); Number // 先检测出来「typeof 67」是Number console.log(typeof 67 + 78); Number78 </script> 复制代码
变量的数据类型
JavaScript语言是一门动态类型的语言,变量并没有一个单独的数据类型,而是会随着内部存储数据的变化,数据类型也会发生变化。
变量的数据类型,与
内部存储数据
有关。将来使用变量时,需要知道内部存储的数据是什么类型,避免程序出错。
<script> // 检测变量的数据类型 // 定义变量 var a = 1; console.log(typeof(a)); number // 第二次赋值 a = true; console.log(typeof(a)); boolean </script> 复制代码
数据类型转换-toString() 方法
如何使用谷歌浏览器控制台,快速的查看数据类型?
字符串的颜色是黑色的, 数值类型是蓝色的, 布尔类型也是蓝色的, undefined和null是灰色
数据.toString() 方法
String(数据) 方法,有些值没有toString(),这个时候可以使用
String()
。比如:number undefined和null
<script> // 转字符串 toString() console.log(true.toString()); // 转字符串 String() console.log(String(23)); console.log(String(undefined)); console.log(String(null)); </script> 复制代码
+号拼接字符串方式
num + ""
,当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串。两边只要有一个是字符串,那么 + 就是
字符串拼接功能
两边如果都是数字,那么就是
算术功能
。
<script> // 12 console.log("1" + 2); // 加一个""空字符串,也会都变成字符串数据类型 console.log(true + ""); console.log(23 + ""); </script> 复制代码
数据类型转换-Number(数据)方法
转型函数Number()可以用于任何数据类型,将其他数据类型转为数字。
字符串:纯数字字符串转为对应数字,空字符串和空白字符串转为 0 ,非空非纯数字字符串转为 NaN。
布尔值:true 转为 1,false 转为 0。
undefined:转为 NaN。
null:转为 0
。
<script> // 转数字 console.log(Number("123")); 123 console.log(Number("")); 0 console.log(Number(" ")); 0 console.log(Number("123abc")); 123abc console.log(Number(true)); 1 console.log(Number(false)); 0 console.log(Number(undefined)); NAN console.log(Number(null)); 0 </script> 复制代码
parseInt() 方法:字符串转整数方法
作用:第一,对浮点数进行取整操作;第二,将字符串转为整数数字。
对数字取整功能,直接舍弃小数部分,只保留整数。
将字符串转为整数数字,也包含取整功能。
字符串中,必须是纯数字字符串或者数字字符开头的字符串,才能转换为正常数字,且只取整数部分, 如果不是数字打头的字符串,会转换为 NaN。
<script> // 字符串转整数 console.log(parseInt(23.45)); 23 console.log(parseInt("123.34")); 123 console.log(parseInt("123.34abc")); 123 console.log(parseInt("a123.34abc")); NAN console.log(parseInt("")); NAN console.log(parseInt(" ")); NAN </script> 复制代码
parseFloat() 方法:字符串转浮点数方法
作用:将字符串转为浮点数数字。
对数字取整功能,直接舍弃小数部分,只保留整数。
要求:满足浮点数数字字符必须在字符串开始,如果不在开始返回值都是NaN。
<script> // 字符串转浮点数 console.log(parseFloat("123.34")); 123.34 console.log(parseFloat("123.34abc")); 123.34 console.log(parseFloat("a123.34abc")); 123.34 console.log(parseInt("a123.34abc")); NAN console.log(parseInt("")); NAN console.log(parseInt(" ")); NAN </script> 复制代码
应用
工作中,利用变量接收 prompt() 语句返回的用户输入的数据,检测数据类型后,得到的是 字符串类型。
如果想要获取的是数字类型的数据,则需要先将得到的字符串转数字,避免出现字符串参 与数学加法运算等。
<script> // prompt 赋值-语句可以接受到用户输入的数据,可以存储到变量num中 var num = prompt("请输入一个10以内的数字"); // 对变量进行调用 console.log(num); // 对num进行检测(语句得到的结果,是字符串类型的数据) console.log(typeof num); 例:用户输入5,则console显示5 string // 如果是想作为纯数字参与程序,最好进行数据转换,否则就是连字符 var num = prompt("请输入一个10以内的数字"); num = parseInt(num); console.log(num); console.log(typeof num); 例:用户输入5,则console显示5 number // 变量num变成数字类型,就可以进行运算 var num = prompt("请输入一个10以内的数字"); num = parseInt(num); console.log(num + 5); console.log(typeof num); 例:用户输入6,则console显示11 number // 变量num没有改类型 var num = prompt("请输入一个10以内的数字"); console.log(num + 5); console.log(typeof num); 例:用户输入65,则console显示65 string // 化简写法 var num = parseInt(prompt("请输入一个10以内的数字")); console.log(num + 4); </script> 复制代码
数据类型转换-Boolean(数据)方法
转型函数 Boolean() 可以用于任何数据类型,将其他数据类型转为布尔类型的值。
转为 false : NaN、0、 “”空字符串、null(空对象)、undefined
转为 true : 非0 非NaN数字、非空字符串
<script> // 转布尔类型 console.log(Boolean(NaN)); false console.log(Boolean(0)); false console.log(Boolean("")); false console.log(Boolean(null)); false console.log(Boolean(undefined)); false console.log(Boolean("abc")); true console.log(Boolean(" ")); true console.log(Boolean(45)); true console.log(Boolean(Infinity)); true </script>
作者:文盲
链接:https://juejin.cn/post/7042202904303779871