js高级 第二天
数据/变量/内存
数据:计算机中的数据以二进制表示,比如00101
变量:
1.可变的量
2.存储数据的容器
3.在内存开辟的空间
内存:
通电开机时,内存产生
关机断电时,内存消失
内存和硬盘的区别:
内存:临时存储空间 读取速度快 存储空间小
硬盘:永久存储空间 读取速度慢 存储空间大
内存,数据, 变量三者之间的关系
* 内存用来存储数据的空间
* 变量是内存的标识,在内存中,数据是通过变量进行处理
内存图
内存图分区:
栈:保存基本数据类型
存储的数据类型
number/string/boolean/null/undefined
特点:后进先出
堆:保存的是复合数据类型
存储的是 对象/数组/函数
代码区:存储代码
变量在内存中
基本数据类型:在内存中,变量保存的是数值
var a;//声明变量 开辟空间
a = 2;//赋值 将值存到空间a中
console.log(a);
复合数据类型:在内存中,变量保存的是地址
var obj = {
name:"尼古拉斯*刘能",
sex:"公"
}
console.log(obj);
变量的赋值
基本数据类型:赋值时,变量传递的是:数值
var b = 3;
var c = b;
console.log(b,c);
复合数据类型:赋值时,变量传递的是地址
var obj = {
name:"尼古拉斯*刘能",
sex:"公"
}
var obj1 = obj;
obj1.sex = "母";
console.log(obj,obj1);//母 母
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HNuvAilJ-1608023506314)(D:\webApp\p3-js高级-H1907A\2009A\day-02\media\内存图.png)]
函数传参
基本类型传参,传递的是:数值
var a = 2;
function demo(num){
//num = 2;
num = num+1;
console.log(num);//3
}
demo(a);
console.log(a);//2
复合数据类型,传递的是:地址
var obj = {name:"李四"};
function demo(o){
o.name="王五";
console.log(o);//王五
}
demo(obj);
console.log(obj);//王五
声明全局变量的三种方式
1.在函数外部,使用var声明的变量
var a = 1;
2.在无形参的函数内部,不使用var声明的变量
function demo(){
b = 1;//全局
}
demo();
function demo(a){
b = 1;//全局
}
demo();
3.通过window添加的属性,也是全局变量
window.sex = "非母";
回调函数
1. 什么函数才是回调函数?
1). 自定义的
2). 没有调用
3). 但最终它执行了(在某个时刻或某个条件下)
2. 常见的回调函数?
* dom事件回调函数 ==>发生事件的dom元素
* 定时器回调函数 ===>window
* ajax请求回调函数(后面讲)
* 生命周期回调函数(后面讲)