**问题:**计算机程序可以处理大量的数据,为什么要给数据分类?
-
更加充分和高效的利用内存
-
也更加方便程序员的使用数据
简单数据类型/基本数据类型/值类型(包装数据类型)
介绍:简单数据类型/基本数据类型,在存储时变量中==存储的是值本身==,因此叫做值类型
问题:简单数据类型为什么会有属性和方法?
答:因为简单数据类型在声明的时候,其实是在JS底层就把基本数据类型包装成了复杂数据类型
const str = 'pink'
console.log(str.length)
相当于
function Object(length,.......) {
this.length = length
}
const str = new Object('pink') pink其实是当做一个实参传入到了构造函数里,并且js内部已经声明好了length这个属性
**基本数据类型有:**number数字型,string字符型,boolean布尔型,undefined未定义型,null空类型
注意:JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,才能确认数据类型
number数字型
包括:整数、小数、正数、负数
let num = 2 // 2 的数据类型就是数字型
NaN
介绍:NaN 代表计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果
出现情况:
console.log('老师'-2) / 输出为NaN
注意:==NaN不等于任何数,包括他自己(NaN不等于NaN),任何数加NaN都是NaN==
toFixed保留两位小数
语法:数字型.toFixed(保留小数的个数)
const num = 8.246
console.log(num.toFixed(2)) 四舍五入保留两位小数 8.25
------------------------------------------------------
const num = 8
console.log(num.toFixed(2)) 8.00
string字符型
介绍:通过单引号'' 、双引号 "或反引号 包裹的数据都叫字符串,推荐使用单引号
let uname = '小明' 字符串类型
let uname = "小明" 字符串类型
let uname = `小明` 字符串类型
let num = '123456' 字符串类型
let num = '' 空字符串
注意:
无论单引号或是双引号必须成对使用
单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
必要时可以使用转义符 \,输出单引号或双引号
字符串拼接
介绍: + 运算符 可以实现字符串的拼接
口诀:数字相加,字符相连
技巧:引引加加
console.log(1 + 1) /输出为 2
console.log('pink' + '老师') / 输出为pink老师
document.write('我今年' + age + '岁了')
模板字符串
介绍:拼接字符串和变量
语法: `` ${变量 }
document.write(`大家好,我叫${uname}, 我今年贵庚${age}岁了`)
split字符串转数组
介绍:split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置
语法:字符串.split('分隔符号')
const str = 'pink,red'
const arr = str.split(',') 分隔符号为 字符串中的 ,
console.log(arr) ['pink','red']
--------------------------------------
const time = '2022/12/15'
const timeArr = time.split('/') 分隔符为 字符串中的 /
console.log(timeArr) [2022,12,15]
字符串小写英文字母转为大写
语法:字符串.toUpperCase()
const str = 'app'
console.log(str.toUpperCase()) // APP
replace 字符串替换
**使用场景:**替换敏感词
语法:字符串.replace(/正则表达式(替换的内容)/,'被替换的文本')
const str = '我要去北京'
const re = str.replace(/北京/,'上海')
console.log(re) 这里不要直接输出str,要输出替换的返回值
substring 字符串截取
介绍:用于截取字符串中的某一段文字
语法:字符串.substring(开始的索引号,结束的索引号)
0 1 2 3 4 5 6 7
const str = '我要必须学会前端'
1.得到字符串中的 必须
console.log(str.substring(2,4)) //必须
----------------------------------------
2.如果 不写第二个参数 默认截取到最后
console.log(str.substring(2)) //必须学会前端
slice字符串截取
**介绍:**用于截取字符串中的某一段文字
**返回值:**包含提取的字符串部分的新字符串。
语法:字符串.slice(从索引号几开始,从索引号几结束)
**参数:**可以用负索引号,表示截取倒数几个字
const str = '我必须学会前端'
str.slice(1) // 必须学会前端
charAt()截取指定字符
**介绍:**用于从一个字符串中返回指定字符
语法:字符串.charAt(索引号)
const str = '字符串截取'
console.log(str.charAt(0)) // 字
startswith检测以谁开头
语法:字符串.startswith(要检测的内容,从第几个开始检测)
const str = '敲代码是一件快乐的事情'
1.第二个参数如果省略,默认从第0个开始检测
console.log(str.startswith('敲代码')) true
2.检测快乐的位置是否在索引号 6 的位置
console.log(str.startsWith('快乐', 6)) true
console.log(str.startsWith('快乐')) false
includes判断字符串里有没有规定的字符
语法:字符串.includes(要检测的内容,从第几个开始检测)
const str = '敲代码是一件快乐的事情'
1.第二个参数如果省略,则表示只要字符串中有就为true
console.log(str.includes('快乐')) true
2.检测快乐的位置是否在索引号 6 的位置
console.log(str.includes('快乐', 5)) false
注意:区分大小写
boolean布尔型
介绍:表示肯定或否定时在计算机中对应的是布尔类型数据
语法:true真 false假
console.log(3 > 4) / false
console.log(3 < 4) / true
undefined未定义型
let i
console.log(i) //undefined
==只声明不赋值,输出为undefined==
null空类型
介绍:JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值 ,
==简单理解null这个空的盒子,盒子里装着谁就是谁的数据类型,如果谁也不装,数据类型就是null==
使用场景:用于销毁变量,或者可以声明空对象
consle.log(null + 1) // 1 null代表0
const obj = null 相当于 const obj = {}
计算区别:
console.log(undefined + 1) // NaN
console.log(null + 1) // 1
console.log(null + NaN) // NaN
复杂数据类型/引用数据类型
介绍:复杂数据类型,在存储时变量中==存储的仅仅是地址==(引用),因此叫做引用数据类型,他通过new关键字创建的对象(系统对象、自定义对象)
复杂数据类型有:function(函数)、Array(数组)、Object(对象)、Data(时间对象)、Math(数学对象)
堆和栈
栈:由操作系统自动分配释放存放函数的参数值、局部变量的值等。==简单数据类型存放到栈里面==
堆:存储复杂类型,一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收==引用数据类型存放到堆里面==
注意:堆里存放引用数据类型的数据,栈里面存的是引用数据类型的地址
typeof检测数据类型
语法:typeof num
let str = '哈哈'
document.write(typeof str) /输出为 string
document.write(typeof 1) /输出为 number
document.write(typeof true) /输出为 boolean
数据类型转换
介绍:把一种数据类型的变量转换成我们需要的数据类型
隐式转换
介绍:某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换
特点:
-
+号两边只要有一个是字符串,都会把另外一个转成字符串console.log('' + 1) 输出为 字符串类型的 1 ---------------------------------------- console.log(1 + '5') 输出为 字符串类型的 6 -
+以外的算术运算符等都会把 数据 转成 数字类型console.log(8 - '5') 输出为 数字型的 3 ------------------------------------------ console.log('3' * '9') 输出为 数字型的 27 -
null 经过数字转换之后会变为 0
console.log(null + 8) 输出为 数字型的 8 --------------------------------------------- console.log(null + '8') 输出为 字符串的 null8 ---------------------------------------------- console.log(null - '8') 输出为 数字型的 -8 -
undefined 经过数字转换之后会变为 NaN
console.log(undefined + 1) 输出为 NaN
-------------------------------------
console.log(NaN + 1) 输出为 NaN
+号==前置单独使用==可以把字符串型转换为数字型(例:+'12'为数字型12 、+'12' + 11为数字型23)==拼接字符串==的
+号可以把数字型转换为字符串型
显示转换
转换为数字型
| 转换方式 | 说明 |
|---|---|
| Number(数据) | 转成数字类型 |
| parseInt(数据) | 只保留整数 |
| parseFloat(数据) | 可以保留小数 |
转换为数字型方法2:(隐式转换)==利用+号==
<script>
let num = +prompt('输入年薪')
console.log(num)
</script>
转换为字符型
语法:String(数据) / 变量.toString(进制)
let num = 20
console.log(String(num)) /字符型的 20
注意:首字母大写