JS中的数据类型

在JS中,主要分为两大类型的数据,即基本数据类型引用数据类型。

基本数据类型

数值型

在JS中,只要是跟数字相关的数据,都被归为一类,即数值类型的数据。它不像其他编程语言一样,对数字还有具体的划分,可以使用整数、小数、正数、负数。

let num1 = 10
let num2 = 10.05
let num3 = +20
let num4 = -20

console.log(typeof num1)
console.log(typeof num2)
console.log(typeof num3)
console.log(typeof num4)

但是,由于小数存在精度的问题,因此,有时候在进行小数计算的时候,结果可能不准确:

 console.log(0.1 + 0.2)

字符串类型

使用双引号或单引号包裹起来的字符成为字符串。

 let str1 = "hello world!"
 let str2 = 'hello world!'
 let str3 = `你好啊!`
 console.log(typeof str1)
 console.log(typeof str2)
 console.log(typeof str3)

在ES6的最新语法中,引入了反引号,即字符串类型的定义可以使用反引号,使用该符号最大的好处就是方便字符的拼接以及模板的生成。

let num = 1234
let str = '1234'
console.log(num)
console.log(str)

 

在谷歌浏览器的开发者工具中,我们如果定义了字符串类型的数字,它和数值类型的数字是由区别的! 

布尔类型

布尔类型的数据只有两个值:true和false,该类型的数据多用在条件的判断和多个值的比较当中中。

undefined

该类型的值比较特殊,有以下情况值为undefined:

  1. 声明变量但未对其进行赋值操作的
  2. 函数中没有return时的返回值 
  3. 访问对象中不存在的属性
  4. 调用函数没有传递实参

null

该类型代表为空,本质上是一个对象。

 console.log(typeof null)

null是一个值,可以保存在变量中,undefined也是一个值,但是它可以被浏览器自动赋值,它们的值也是相等的,但是数据类型不同。

console.log(undefined == null)
console.log(undefined === null)

复合数据类型

数组

数组是js中的一个复合数据类型,可以保存多个数据

let arr = ['pink', 'green', 'blue']

数组的访问是通过数组名[下标]的方式进行的

 let arr = ['pink', 'green', 'blue']
 console.log(arr[0])
 console.log(arr[1])
 console.log(arr[2])

函数 

函数也是JS中的一种复合数据类型,使用fucntion关键字定义

function fun() {
  console.log('你好啊!')
}

函数是一种封装了业务逻辑代码的代码块,通过一次性声明,多次调用(使用),从而提高程序的效率。

对象

js是一门基于对象的编程语言。任意一个数据都可以看成一个对象,包括数组和函数。

const obj = {
 uname: '张三',
 age: 24,
 gender: '男',
 sayHi: function () {
  console.log('你好啊!')
 }
}

使用字面量的形式定义一个obj对象。

数据的存储

以上两种数据是js的基本数据,但是不同类型的数据的存储方式也不同。对于基本的数据类型,会被存储到内存栈中,对于复杂的复合数据了类型,会被存储到内存堆中。

let num1 = 100
let num2 = num1
num2 = 200
console.log(num1) //100

从上面的代码中我们可以得出结果,num1的值还是100,这是因为num1和num2是两块独立的空间,当我们去修改num2中的数据,实际上并不会影响num1中的数据,这就是基本数据类型的存储方式。 

let obj1 = {
  uname: '张三',
  age: 24
}
// 把obj1的数据给obj2
let obj2 = obj1

// 修改obj2的数据
obj2.uname = "山本"

console.log(obj1)

从上面的结果中,我们看到,修改了obj2中的数据,导致obj1中的数据也被修改了,这是因为,复合数据类型,在内存栈中只保存了一个内存地址,该地址指向了恩内存堆中的数据,当把obj1的值赋值给了obj2,实际上就是把这个内存地址给了obj2,那么此时的obj2也指向了内存堆中的数据,当我们去修改这个数据时,自然也会改变obj1,因为它们同时指向一个数据。这就是复合数据类型的存储方式。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值