undefined 与null

166 阅读2分钟

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、什么是对象

用来保存多个数据的容器;

一个对象表示一个现实事物,里面由多个属性:数据值构成。属性代表事物的特征

访问内部数据的两种方式:

  • .属性名
  • ['属性名']: