[技术分享]JavaScript 引用类型与基本数据类型区别

zuimeiaj发布于2 个月前 • 146 次阅读

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
 

引用的本质就像是卡绑定一样。他可以给我们提供方便,但是也有一点小弊端,由于这种特殊性,在编程时就很容易造成数据污染。避免这个问题是对对象进行一个深拷贝。

共收到 0 条回复