高阶JavaScript
- 数据类型
-
- 相关问题(undefined与null的区别,什么时候给变量赋值为null,严格区别变量类型和数据类型)
- 数据_变量_内存
-
- 相关问题(关于引用变量赋值的问题; 在JS调用函数时传递变量参数时,是值传递还是引用传递; JS引擎如何管理内存)
- 对象
数据类型 1、分类
(1)基本类型
- String:任意的字符串
- Number:任意的数字
- Boolean:true/false
- Undefined:undefined
- Null:null
- Object:任意对象
- Function:一种特别的对象(函数)
- Array:一种特别的对象(数组)
(1)typeof
- 可以判断:undefined,数值,字符串,布尔值,function
- 不能判断:null与object;object和array
- 返回数据类型的字符串表达
var a;
console.log(a,typeofa,typeof a==='undefined');
//undefined,'undefined',true
a=4;
console.log(typeof a==='number');
//true
a='lyh';
console.log(typeof a==='string');
//true
a=null;
console.log(typeof a);
//'object';
只能用===来判断是否是null
(2)instanceof
- 判断对象的具体类型
var b1 = {
b2:[1,'abc',console.log],
b3:function(){console.log('b3');
return function(){
return 'lyh';
}
};
};
文章图片
(3)===
- 可以判断:undefined,null
- undefined代表定义未赋值
- null定义了并赋值,只是值为null
var a ;
console.log(a);
//undefined
a = null;
console.log(a);
//null
2、什么时候给变量赋值为null
- 初始赋值为null,表明将要赋值的变量为对象
- 结束时,让对象成为垃圾对象(被垃圾回收器回收)
var b = null;
//初始赋值为null,表明将要赋值的变量为对象
b = [1,2,3];
b = null;
//让b指向的对象成为垃圾对象(被垃圾回收器回收)
3、严格区别变量类型和数据类型
(1)数据的类型
- 基本类型
- 对象类型
- 基本类型:保存的是基本类型的数据
- 引用类型:保存的是地址值
- 存储在内存中的代表特定的信息的东西,本质上是0101…
- 数据的特点:可传递,可运算
- 一切皆数据
- 内存中所有操作的目标
- 内存条通电后产生的可存储数据的空间(临时的)
- 内存的产生和死亡:内存条==>通电==>产生内存空间==>存储数据==>断电==>内存空间和数据都消失
- 一块小内存的两个数据
(1)内部存储的数据
(2)地址值 - 内存分类
(1)栈:全局变量/局部变量
(2)堆:对象
- 可变化的量,由变量名和变量值组成
- 每个变量都对应着一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的数据
- 内存用来存储数据的空间
- 变量是内存的标识
文章图片
文章图片
- 2个引用变量指向同一个对象,通过修改一个变量修改对象内部数据,另一个变量看到的是修改后的数据
- 2个引用变量指向同一个对象,让其中一个引用变量指向另一个对象,另一引用变量依然指向前一个对象
var a = {
age: 12
};
a = {
age: 13
};
function fun(obj) {
obj = {
age: 15
};
}
fun(a);
alert(a.age);
//输出13
/*因为传实参进去之后obj一开始的内容等于a;
后来obj又开辟了一个新的地址,已经和a无关了*/
【笔记|高阶JavaScript笔记1(数据类型 ,相关问题, 数据_变量_内存 ,相关问题,对象)】2、在JS调用函数时传递变量参数时,是值传递还是引用传递
- 理解1:都是值(基本值/地址值)传递
- 理解2:可能是值传递,也可能是引用传递(地址值)
(1)内存生命周期
- 分配小内存空间,得到它的使用权
- 存储数据,可以反复进行操作
- 释放小内存空间
- 局部变量:函数执行完自动释放
- 对象:成为垃圾对象==>垃圾回收器回收
function fun(){
var b = {};
};
fun();
//b是自动释放,b指向的对象是在后面的某一时刻由垃圾回收器回收
对象 1、什么是对象
- 多个数据的封装体
- 用来保存多个数据的容器
- 一个对象代表现实世界中的一个事物
- 统一管理多个数据
- 属性:属性名(字符串)和属性值(任意)组成
- 方法:一种特别的属性(属性值是函数)
- . 属性名:编码简单,有时不能用
- [‘属性名’]:编码麻烦,能通用
- 什么时候用 [‘属性名’] 的方式
(1)属性名包含特殊字符:空格 与 -
(2)属性名不确定
文章图片
文章图片
推荐阅读
- 笔记|算法题JavaScript(回文数)
- javascript|vue 移动端断网后处理
- javascript|精读《useRef 与 createRef 的区别》
- html5|基于 HTML5 Canvas 的 3D 热力云图效果
- vue小项目|vue小项目(二)—— 购物车的完整实现
- 入坑vue3|vue3 数据响应更复杂了吗()
- vue.js|Vue 2.7 is Now in Beta
- 入坑vue3|vue3入门,其实吧,压力也没那么大
- 前端|前端食堂技术周刊第 43 期(Vue 2.7 Naruto、Prisma 4.0.0、Grid 布局生成器、HTML Tips)