undefined 与null都是JavaScript的基础类型;
1、undefined 与null区别:
undefined表示变量定义了但是没有赋值。null表示变量定义了,也被赋值为null.
2、什么时候给变量赋值为null?
- 初始赋值,当不确定对象的类型即将被赋值之前。也可以是表明该对象将要被赋值为对象。
- 结束前,让对象的指向释放(被垃圾回收机制回收)
例:
var a = ['1','b'];
//。。。。。。
//使用完a之后
a = null; a指向的['1','b']就没有被别的引用,就会被垃圾回收机制回收
3、严格区分变量类型与数据类型
数据类型:
- 基本类型
- 对象类型
变量类型:变量内存值的类型
- 基本类型:保存基本类型数据
- 引用类型:保存的是对象的引用,地址。
4、什么是数据?
存储在内存中代表特定信息的东西,本质上是二进制数据,如0101....
数据的特点:
可传递, 可运算;
var a = 18; 18代表数据
5、什么是内存?
临时存储数据的空间。
6、什么是变量?
可变化的量, 由变量名和变量值组成。每个变量对应一块小内存。
变量名:用来查找存储变量值的内存空间。
变量值:就是内存中保存的数据
7、数据,内存,变量相关问题
(1)var a = xxx; a内存保存的到底是什么?
-
xxx是基本数据,保存的就是这个数据
var a = 3; //a保存的就是3
-
xxx是对象, 保存的是对象的地址值(引用)
var a = {name: "test"}
-
xxx是一个变量, 保存的是xxx的内存内容,可能是基本数据,也可能是地址值
var a = {name: "test"} var b = a; //xxx表示b, b保存的和a内容一样,
a= 3; b = a; //b保存的是3
(2)在js调用函数时传递的参数,是值传递还是引用传递?
值(基本类型数据值/地址值(引用))传递
//例1
var a = 3;
function fn(a){
a = a+1;
}
fn(a)
console.log(a)// a=3
//例2
var obj = {name:"tets"};
function fn (obj){
obj.name = "123";
console.log(obj.name);
}
fn(obj);
console.log(obj); //123
8、什么是对象
用来保存多个数据的容器;
一个对象表示一个现实事物,里面由多个属性:数据值构成。属性代表事物的特征
访问内部数据的两种方式:
- .属性名
- ['属性名']: