目录
1.数据类型的简介
1.1为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18,这些数据的类型是不一样的。
1.2变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript 是一种弱类型、动态类型的动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
1.2.1弱类型
弱类型:这意味着当操作涉及不匹配的类型时,它允许隐式类型转换,而不是抛出类型错误。
var a = 42; // a现在是一个数值
var res = a + "1"; //JavaScript将a强制转换为字符串,将其与另一个操作数连接起来
console.log(res); // 421
1.2.2动态类型
动态类型:JavaScript 中的变量与任何特定值类型没有任何关联,任何变量都可以被赋予(和重新赋予)各种类型的值
var a = 42; // a 现在是一个数值
a = "bar"; // a 现在是一个字符串
a = true; // a 现在是一个布尔值
2.数据类型的分类
2.1基本数据类型(简单数据类型)
2.1.1 Number数字类型
- 既可以用来保存整数值,也可以用来保存小数(浮点数)。Number对象是一个包装对象,使用时,数字相关的不需要转对象,就能使用数字对象的属性和方法。
var a=123;//整数 var a=123.23;//小数
-
属性
Number.MAX_VALUE 1.79769e+308 最大值 Number.MIN_VALUE 5e-324 最小值>0 Number.NEGATIVE_INFINITY -Infinity 无穷小 Number.POSITIVE_INFINITY Infinity 无穷大 Number.NaN NaN 一个特殊的值,它是数字类型 - 方法
数字.toFixed(n) 保留n位小数 数字.toString(进制) 十进制转为其他进制 Number.isNaN(参数); 判断传递的值是否为 NaN,并且检查其类型是否为 Number 如果值为 NaN 且类型为 Number,则返回 true,否则返回 false。 - 函数
isNaN(参数) 全局函数 作用 判断一个参数是否为非数字值 结果 非数字值则返回 true 是数字值返回false - 三个特殊的值
NaN(not a number) 不是一个数,是一个特殊的值
但是是一个数字类型*****Infinity 无穷大 - 进制
二进制 0 1 八进制 0~7 0 十进制 0~9 十六进制 0~9 A~F或a~f 0x
2.1.2 String字符串类型
-
字符串型可以是引号中的任意文本,其语法为 双引号 "" 和 单引号''。因为 HTML 标签里面的属性使用的是双引号,JS 这里我们更推荐使用单引号。
-
字符串引号的嵌套
-
JS 可以用单引号嵌套双引号 ,或者用双引号嵌套单引号 (外双内单,外单内双)。单套单,双套双会报错
var str='hello "world"'//单套双 可以使用 var str1="hello 'world'"//双套单 可以使用 var str2="hello "world""//双套双 报错 用转义字符\解决 var str3='hello 'world''//单套单 报错 用转义字符\解决
-
引号
引号类型 特点 单引号' ' 双引号" " 换行会报错,变量不能写在引号内 反引号 换行不报错,里面的变量需要解析${变量}
-
-
字符串转义符
-
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。转义符都是 \ 开头的,常用的转义符及其说明如下:
转义符 解释说明 \n 换行符,n是newline的意思 \\ 斜杠\ \' ' 单引号 \" " 双引号 \t tab 缩进 \b 空格,b是blank的意思
-
- 字符串的长度
-
字符串是由若干字符组成的,这些字符的数量就是字符串的长度。通过字符串的 length 属性可以获取整个字符串的长度。
var str='hello'; console.log(str);//5
-
- 字符串拼接
- 多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
- 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
//1 字符串"相加" console.log('hello'+' '+'world');//hello world //2 数值字符串"相加" console.log('100'+'100');//100100 //3 数值字符串+数值 console.log('20'+10);//2010
2.1.3 Boolean布尔类型
- 表示一个逻辑实体并且包括两个值:true和flase,其中 true 表示真(对),而 false 表示假(错)。布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。
console.log(true + 1);// 2 console.log(false + 1);// 1
- 布尔值通常用于条件运算,包括三元运算符、if...else、while等。
2.1.4 Undefined未定义类型
-
一个声明后没有被赋值的变量会有一个默认值 undefined ( 如果进行相连或者相加时,注意结果)
var v; console.log(v);// undefined console.log('你好' + v);// 你好undefined console.log(11 + v);// NaN console.log(true + v);//NaN
2.1.5 Null空类型
-
一个声明变量给 null 值,里面存的值为空
var b = null; console.log('你好' + b);//你好null console.log(11 + b);//11 console.log(true + b);//1
2.1.6 Symbol
- ES6 引入了一种新的原始数据类型,表示独一无二的值。
2.2引用数据类型(复杂数据类型)
- Array 数组
- Date 日期
- Function 函数
- Object 对象
- RegExp 正则
3.检测变量的数据类型
3.1检测变量的数据类型
- typeof 可用来获取检测变量的数据类型
var num = 18; console.log(typeof num);//结果 "number"
- 不同数据类型的返回值
类型 例子 结果 Number typeof 15 'number' String typeof 'hello' 'string' Boolean typeof true 'boolean' Undefined typeof undefined 'undefined' Null typeof null 'object' *****
3.2字面量
- 在 JavaScript 中,你可以使用各种字面量。这些字面量是脚本中按字面意思给出的固定的值,而不是变量。
分类 解释 举例 数字字面量 包括多种基数的整数字面量和以 10 为基数的浮点数字面量 10、12.2 字符串字面量 字符串字面量是由双引号(")对或单引号(')括起来的零个或多个字符。字符串被限定在同种引号之间;也即,必须是成对单引号或成对双引号。 '1234'、'hello'
'你好'
布尔字面量 布尔类型有两种字面量 true、false 除以上三种还有:数组字面量、对象字面量、RegExp字面量,这里先不总结
4.数据类型转换
4.1其他类型转Number
- 强制转换
- Number(参数)
- 字符串转数字
var str='123'; str=Number(str); console.log(str,typeof str);//123 'number' var str1='123hello'; str1=Number(str1); console.log(str1,typeof str1);//NaN 'number' var str2='hel123hello'; str2=Number(str2); console.log(str2,typeof str2);//NaN 'number' var str3='';//或var str3=' '; str3=Number(str3); console.log(str3,typeof str3);//0 'number'
- Boolean转数字
var flag=true; flag=Number(flag); console.log(flag,typeof flag);//1 'number' var flag1=false; flag1=Number(flag1); console.log(flag1,typeof flag1);//0 'number'
- Undefined转数字
var a; a=Number(a); consloe.log(a,typeof a);//NaN 'number'
- Null转数字
var a1=null; a1=Number(a1); consloe.log(a1,typeof a1);//0 'number'
- 字符串转数字
- parseInt(参数)与parseFloat(参数)
- 纯数字字符串或者开头是数字的字符串
//parseInt var str='123'; str=parseInt(str); console.log(str,typeof str);//123 'number' //parseFloat var str1='123.15'; str1=parseFloat(str1); console.log(str1,typeof str1);//123.15 'number' //parseInt var str='123hello'; str=parseInt(str); console.log(str,typeof str);//123 'number' //parseFloat var str1='123.15hello'; str1=parseFloat(str1); console.log(str1,typeof str1);//123.15 'number'
- 除以上两种,其他都为NaN
//parseInt var str='qwe123hello'; str=parseInt(str); console.log(str,typeof str);//NaN 'number' //parseFloat var str1='qwe123.15hello'; str1=parseFloat(str1); console.log(str1,typeof str1);//NaN 'number'
- 纯数字字符串或者开头是数字的字符串
- Number(参数)
- 隐式转换
- 利用算数运算(+,-,*,/)隐式转换为数值型(只适用于纯数字字符串)
var num='123'; num=+num; console.log(num,typeof num);//123 'number'
同理也可以使用 '123'-0,'123'*1,'123'/1
- 利用算数运算(+,-,*,/)隐式转换为数值型(只适用于纯数字字符串)
4.2其他类型转String
- 强制转换
- String(参数)函数 所有都可用
var num=123; num=String(num); console.log(num,typeof num);//123 string var num=true; num=String(num); console.log(num,typeof num);//true string var num=null; num=String(num); console.log(num,typeof num);//null string
- 参数.toString() 方法 null和undefined没有此方法
var num=789; num=num.toString(); console.log(num,typeof num);//789 string //不合法 var a;//var a=null; a=a.toString();//报错 undefined和null没有.toString()方法 console.log(a,typeof a);
- String(参数)函数 所有都可用
- 隐式转换
- 拼空串
- 123+''——'123'
true+''——'true'
- 123+''——'123'
- 拼空串
4.3其他类型转Boolean
- Boolean(参数)
- 返回值是true、false
- 只有六个值转换后为真,其他都为假
console.log(Boolean('')); // false console.log(Boolean(0)); // false console.log(Boolean(NaN)); // false console.log(Boolean(null)); // false console.log(Boolean(undefined)); // false console.log(Boolean(false)); // false
'' 空字符串、0、undefined、null、NaN、false