[技术分享]JavaScript 引用类型与基本数据类型区别
zuimeiaj发布于2 年前 • 478 次阅读
JavaScript 基本数据类型
- Number String Boolean null undefind
- Number 类型 包含 整数,小数,NaN ,Infinity 如 : var i = 1 ; var num = 1.00001
- String 类型使用 双引号或者单引号包含的字符串 如:var str =“hello”; var str2 = ‘hello’;
- Boolean 的值只有 true 和 false,
- null 和 undefined 都是固定值 他们的区别是 null 是一个对象,undefined是已定义变量 但为初始化值。如 var obj= null; var und ; obj是一个空值(空指针)他不指向任何实际内存地址;und未初始化值
我们可以通过typeof 来判断数据的基本类型 typeof 1 === “number”
typeof 1.0 === “number”
typeof NaN === “number”
typeof “Hello” === “string”
typeof false === “boolean”
typeof null === “object”
typeof undefined === “undefined”
``这里值得一提的是我们都不应该在自己的应用中显式的使用 undefined ,相反我们可以在应用中使用null来清理内存。如 var obj ={} ; 当你想清理内存时候,只需要使用 obj= null
另外在 逻辑运算判断中也需要注意(数据类型的隐式转换)
null == undefined // true
null === undefined // false
0 == false // true
0 === false // false
// 空字符
'' === false // false
'' == false // true
null == false // true
null === false // false
undefined == false // true
undefined === false // false
// 把string类型转为 number类型
'1' * 2 = 2
1 / "0.5" = 20
// 把number类型转为 数字类型
1 + "1" = "11"
引用类型
引用类型标识一个内存的指针,可以理解为一个指向某个内存的指针,如: var obj = {}; var ant = obj ; obj 和 ant 都是一个指针,他们指向同一个内存。当obj的值改变时,那么ant的值也会跟着变。 我们可以这么来理解:小张和小强的微信支付否绑定了同一张银行卡(10元钱)。当小张花了1元钱后,小强也只有9元钱啦
var zhang = {balance:10}
var qiang = obj;
// 小张花了5元
zhang. balance = 5
// 小强也只有5元了
qiang.balance == 5 // true
// 小强把5元赚回来了
qiang.balance =10
zhang.balance ==10// true
// 小张重新绑定了一张卡了,并花完他
zhang = {balance :10}
zhang.balance = 0
// 小强还是以前那张卡
qiang.balance == 10// true
qiang.balance == 0 //false
// 小强不在拥有任何卡了
qiang = null
引用的本质就像是卡绑定一样。他可以给我们提供方便,但是也有一点小弊端,由于这种特殊性,在编程时就很容易造成数据污染。避免这个问题是对对象进行一个深拷贝。