js引用类型和值类型

JavaScript012

js引用类型和值类型,第1张

(1)值类型:字符串、数值、布尔值、undefined、null

(2)引用类型:对象、数组、函数

(1)值类型:

1、占用空间固定,保存在栈中

2、保持和复制的都是值的本身

3、基本数据类型都是值类型

4、一个方法在执行时会创建一个内存栈,并在执行结束后自然销毁,栈里面存储的是基础变量和一些对象的引用变量,基础变量的值是存储在栈中,而引用变量存储在栈中的指向堆中的数组或者对象的地址,这就是为什么 修改引用类型 总会影响到其他这个动作的引用变量。

(2)引用类型:

1、占用空间不固定,保存在堆。

2、保存和复制的是指向对象的一个指针。

3、堆内存的对象不会随方法的结束而被销毁,即使方法结束后,这个对象还可能被另一个引用变量所使用,那么这个对象依然不会销毁,只有一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会去核实的时候回收它。

(1)动态属性;定义基本类型值和引用类型值的方式是类似的。但是,当这个值保存到变量中以后,对不同类型值可以自行的操作大相径庭。对于引用类型的值,我们可以为它已经属性和方法,也可以改变和删除其属性的方法,但是,我们不能给基本类型的值添加属性,只能给引用类型值动态的添加属性,以便将来使用。

(2)如果从一个变量向另一个变量复制基本类型值,会在变量对象上创建一个新值,然后把该值分钟到为新变量分配的位置上。

(3)传递参数;在向参数传递基本类型的值时,被传递的值会分钟给一个局部变量(即命名参数)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。

js基本的数据类型 :数字类型,字符串型,布尔型,undefined,null ,对象类型,数组

1、数字类型(Number)

只有一种数字类型,数字 可以是小数 ,也可以的整数

以0开头 默认使用8进制来表示我的这个数字

以0x开头 默认使用16进制来表述我的这个数字

如果以-开头 默认以负数

如果我带有e:以科学计数法来解析我的这个数字

2、字符串型(string)

字符串是存储字符的变量,用来表示文本的数据类型,程序中的字符串是包含单引号/双引号的,由单引号来界定我双引号中包含的字符串 反过来

es6模板字符串("`")

3、布尔类型(boolean)

一般是用在流程控制语句中,字符串和数字类型都是无穷多个,然而我们的布尔数据类型只有两个:true 和 false

这两个个值一般用于说明某个事物是真或者假

js一般用布尔类型来比较所得到的结果

4、null(空)

关键字null是一个特殊的值,它表示变量为空值,用来定义空的或者是不存在的引用。

如果试图去引用一个没有定义的值,就会返回一个null。

这里注意一点:null并不等于"" 或者0

5、undefined(未定义)

这个值表示变量不含有值,没有定义的值,或者被定义了一个不存在的属性值

js中有5种数据类型:Undefined、Null、Boolean、Number和String。\x0d\x0a还有一种复杂的数据类型Object,Object本质是一组无序的名值对组成的。\x0d\x0aUndefined类型只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的,例子:\x0d\x0avar \x0d\x0ai\x0d\x0aalert(i == undefined)//true\x0d\x0avar i与var i = \x0d\x0aundefined这两句是等价的。\x0d\x0a包含Undefined值的变量和未定义的变量是不一样的。\x0d\x0aNull类型也只有一个值:null.null表示一个空对象的指针。\x0d\x0aBoolean类型:只有两个字面量true和false。但是js中多有的变量都可以使用Boolean()函数转换成一个Boolean类型的值。\x0d\x0aNumber类型:整数和浮点数。NaN:Not \x0d\x0aa Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0 \x0d\x0a返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。\x0d\x0a针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。\x0d\x0aString类型:略\x0d\x0atypeof操作符:对一个变量进行推断变量的类型,可能返回以下字符串:\x0d\x0a"undefined" \x0d\x0a如果这个值,未定义或者为初始化\x0d\x0a"boolean" 布尔值\x0d\x0a"string" 字符串\x0d\x0a"number" 数值\x0d\x0a"object" \x0d\x0a对象\x0d\x0a"function" 函数\x0d\x0a用法:typeof 95 或者 typeof(95)会返回"number".