javascript----数据类型总结

本文深入讲解JavaScript中的数据类型,包括基本类型与引用类型的区别、特殊值undefined与null的不同之处、如何利用typeof及instanceof判断数据类型等内容,并探讨了变量、内存与数据之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型总结:

1.分类:

基本类型:

1.Number:任意数值

2.String:任意文本

3.Boolean:true/false

4.undefined:undefined

5.null:null

对象()引用)类型:

Object:任意对象

Array:特别的对象类型(有下标/内部数据有序)

Function:特别的对象类型(可执行)

2.用于查看(判断)数据类型(typeof,instanceof,===):

typeof:(返回的是数据类型的字符串表达形式)

可以区别:数值,字符串,undefined,function

不可以区别:null与对象,一般对象与数组

instanceof:

专门用来判断对象数据的类型:Object,Array与Function等

===:

   可以判断:undefined和null

代码示范区:

//1. 基本类型
  var a
  console.log(a, typeof a, a===undefined) // undefined 'undefined' true
  console.log(a===typeof a) // false


  a = 3
  console.log(typeof a === 'number')
  a = 'atguigu'
  console.log(typeof a === 'string')
  a = true
  console.log(typeof a === 'boolean')


  a = null
  console.log(a===null) // true
  console.log(typeof a) // 'object'


  console.log('--------------------------------')


  //2. 对象类型
  var b1 = {
    b2: [2, 'abc', console.log],
    b3: function () {
      console.log('b3()')
    }
  }
  console.log(b1 instanceof Object, typeof b1) // true 'object'
  console.log(b1.b2 instanceof Array, typeof b1.b2) // true 'object'
  console.log(b1.b3 instanceof Function, typeof b1.b3) // true 'function'


  console.log(typeof b1.b2[2]) // 'function'
  console.log(b1.b2[2]('abc')) // 'abc' undefined


2.数据类型中一些特殊的区别:

1.undefined与null的区别?

undefined代表没有赋值

null代表赋值了,只是值为null

代码示范区:

 var a1
  var a2 = null
  console.log(a1, a2)


2.什么时候给变量赋值为null呢?

var  a=null   //a将指向一个对象,但是对象此时还没有确定

a=null   //让a指向的对象成为垃圾对象

代码示范区:

 //初始
  var a3 = null
    //中间
  var name = 'Tom'
  var age = 12
  a3 = {
    name: name,
    age: age
  }
    //结束
  a3 = null





3.严格区别变量类型也数据类型?

js的变量本身是没有类型的,变量的类型实际上是变量内存中数据的类型

变量类型:

1.基本类型:保存基本类型数据的变量

2.引用类型:保存对象地址值的变量

数据对象

1.基本类型

2.对象类型




3.什么是 数据_变量_内存的简介?

1.什么是数据?

存储于内存中代表特定信息的'东西',本质就是010101的二进制

具有可读和可传递的基本特性

万物(一切)皆数据,函数也是数据

程序中所有操作的目标:数据

算术运算

逻辑运算

赋值

调用函数传参

2.什么是内存?

内存条通电后产生的存储空间(临时的)
  * 产生和死亡: 内存条(集成电路板)==>通电==>产生一定容量的存储空间==>存储各种数据==>断电==>内存全部消失
  * 内存的空间是临时的, 而硬盘的空间是持久的
  * 一块内存包含2个数据
    * 内部存储的数据(一般数据/地址数据)
    * 内存地址值数据
  * 内存分类
    * 栈: 全局变量, 局部变量 (空间较小)
    * 堆: 对象 (空间较大)

3.什么是变量?

值可以变化的量,由变量名与变量值组成

一个变量对应一块小内存,变量名用来查找到内存

变量值就是内存中保存的内容

4.内存,数据, 变量三者之间的关系:
  * 内存是一个容器, 用来存储程序运行需要操作的数据
  * 变量是内存的标识, 我们通过变量找到对应的内存, 进而操作(读/写)内存中的数据




关于赋值和内存问题:

代码区:

 var a = 3
  a = function () {


  }


  var b = 'abc'
  a = b
  b = []
  a = b

问题区: var a = xxx, a内存中到底保存的是什么?

第一个: xxx是一个基本数据

第二个:  xxx是一个对象

第三个: xxx 是一个变量




关于引用变量赋值问题:

1.多个引用变量指向同一个对象,通过一个引用变量修改对象内部数据另一个(一些)引用变量也看得见

代码解释区:

var obj1 = {}
  var obj2 = obj1
  obj2.name = 'Tom'
  console.log(obj1.name)
  function f1(obj) {
    obj.age = 12
  }
  f1(obj2)
  console.log(obj1.age)



2.多个引用变量指向同一个对象,让一个引用变量指向另一个对象, 另一个引用变量还是指向原来的对象



代码解释区:

var obj3 = {name: 'Tom'}
  var obj4 = obj3
  obj3 = {name: 'JACK'}
  console.log(obj4.name)
  function f2(obj) {
    obj = {name: 'Bob'}
  }
  f2(obj4)
  console.log(obj4.name)




关于数据传递问题 :

问题:在js调用函数时传递变量参数时,是值传递还是引用传递只是这个值可能是基本数据,也可能是引用(地址)数据

如果后一种看成是引用传递, 那就值传递和引用传递都可以有

代码示范区:

 function f(a) {
    console.log(a)
  }
  var n = 4
  f(n) //传递的是n的值 --->值传递


  function f2(a) {
    a.name = 'atguigu'
  }
  n = {}
  f2(n) // 传递的是n指向的对象 ---> 引用传递   ???
  console.log(n.name)





内存管理:

问题;Js引擎如何管理内存?

1.内存生命周期

1.分配需要的内存

2.使用分配到的内存

3.不需要时将其释放/归还

2.释放内存:

为执行函数分配的栈空间:函数执行完自动释放

存储对象的堆空间内存:当内存没有引用指向时,对象成为垃圾对象垃圾回收器后面就会回收释放此内存



代码示范区:

var obj = {}
  obj = null // ?使对象失去引用


  function fn () {
    var a = 3
    var b = {}
  }
  fn() // ?释放fn局部环境的内存

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 “STC单片机电压测量”是一个以STC系列单片机为基础的电压检测应用案例,它涵盖了硬件电路设计、软件编程以及数据处理等核心知识点。STC单片机凭借其低功耗、高性价比和丰富的I/O接口,在电子工程领域得到了广泛应用。 STC是Specialized Technology Corporation的缩写,该公司的单片机基于8051内核,具备内部振荡器、高速运算能力、ISP(在系统编程)和IAP(在应用编程)功能,非常适合用于各种嵌入式控制系统。 在源代码方面,“浅雪”风格的代码通常简洁易懂,非常适合初学者学习。其中,“main.c”文件是程序的入口,包含了电压测量的核心逻辑;“STARTUP.A51”是启动代码,负责初始化单片机的硬件环境;“电压测量_uvopt.bak”和“电压测量_uvproj.bak”可能是Keil编译器的配置文件备份,用于设置编译选项和项目配置。 对于3S锂电池电压测量,3S锂电池由三节锂离子电池串联而成,标称电压为11.1V。测量时需要考虑电池的串联特性,通过分压电路将高电压转换为单片机可接受的范围,并实时监控,防止过充或过放,以确保电池的安全和寿命。 在电压测量电路设计中,“电压测量.lnp”文件可能包含电路布局信息,而“.hex”文件是编译后的机器码,用于烧录到单片机中。电路中通常会使用ADC(模拟数字转换器)将模拟电压信号转换为数字信号供单片机处理。 在软件编程方面,“StringData.h”文件可能包含程序中使用的字符串常量和数据结构定义。处理电压数据时,可能涉及浮点数运算,需要了解STC单片机对浮点数的支持情况,以及如何高效地存储和显示电压值。 用户界面方面,“电压测量.uvgui.kidd”可能是用户界面的配置文件,用于显示测量结果。在嵌入式系统中,用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值