js基础 一、数据类型 (1)分类 【1】基本(值)类型 number string boolean undefined null 【2】对象(引用)类型 Object:任意对象 Array:一种特别的对象(数值下表,内部数据是有序的) Function:可以执行 (2)判断 typeof: 可以判断: undefined/数值/字符串/布尔值/function 不能判断: null与Object Object与Array
instanceof:
判断对象的具体类型
===
可以判断undefined/null
问题1:undefined null的区别
undefined是定义,没有赋值
null 定义并赋值,只是值为null。
问题2:什么时候给变量赋值为null?
初始赋值,表明将要赋值为对象;结束赋值null,确定为垃圾对象,进而被垃圾回收机制回收
//起始
var b = null //初始赋值为null,表明将要赋值为对象
//确定对象就赋值
b = [1, 2]
//最后
b = null //让b成为垃圾对象,被垃圾回收机制回收
问题3:严格区分变量类型与数据类型
【1】数据的类型:
基本类型
对象类型
【2】变量的类型: (变量内存值的类型)
基本类型:保存就是基本类型的数据
引用类型:保存的是地址值
问题4:堆和栈的区别:
var obj = {name: 'Tom} 内存地址假设为:0x123
var a = obj
obj.name 表明存储的是地址类数据,找到内存ID,读取内存数据
任何内存都是地址
对象的内存,是有对应的地址的
栈空间: 堆空间
基本数据 对象数据
变量 内存
obj:0x123 0x123:{name: 'Tom'}
a:0x123
函数名 函数体
问题5:什么是数据
存储在内存中代表特定信息的东西,本质上是二进制
数据的特点:可传递、可运算
一切皆数据
内存中所有操作的目标:数据
算术运算
逻辑运算
赋值
运行函数
问题6:什么是内存
内存条通电后产生的可储存数据的空间(临时的)
内存产生和死亡:
内存条(电路板)==》通电==》产生内存空间==》存储数据==》处理数据==》断电==》内存空间和数据都消失
一块小内存的2个数据:
内部存储的数据
地址值
程序代码执行过程:代码==》计算机编译(将代码转换为二进制)==》编译完之后,按照计算机底层逻辑执行
内存分类:
栈:全局变量/局部变量 (标识对象的变量名称)
堆:对象
问题7:什么是变量
可以变化的量,由变量名和变量值组成
每个变量都对应一小块内存,变量名用来查找对应的内存,变脸值就是内存中保存的数据
问题8:内存/数据/变量三者之间的关系
写完代码==》存在硬盘==》执行代码==》代码到内存空间,快速执行
数据:存储在内存中代表特定信息的东西,本质上是二进制
数据的特点:可传递、可运算
内存:用来存储数据的临时空间
硬盘:存储数据的永久空间
变量:内存的标识(包含变量名、变量值)
问题9:赋值和内存的关系
var a = xxx; a内存中到底保存的是什么:
xxx是基本数据类型,内存中保存的就是这条数据(变量名、变量值)
xxx是对象,内存中保存的是对象的地址值(变量名/地址值)
xxx是一个变量,内存中保存的xxx数据(可能是基本数据,也可能是地址值)
问题10:关于引用变量赋值
var obj1 = {name: 'Tom'}
var obj2 = obj1 //obj2保存的是obj1内存的内容(内存地址)
obj1.name = 'jack'
console.log(obj2.name) //'jack'