1. 程式人生 > >JavaScript基礎拓展總結深入(== 和 ===的區別、undefined和null的區別,分號問題)

JavaScript基礎拓展總結深入(== 和 ===的區別、undefined和null的區別,分號問題)

JavaScript中的== 和=== 的區別

== 表示值的比較,=== 表示物件型別的比較。 注意 1、對於string,number等基礎型別,== 和 ===是有區別的。 a)不同型別間比較,==之比較轉化成同一型別的值,如果值相等,結果就等, === 如果型別不同,其結果就是不等。

alert('2' == 2);  //結果為true
alert('2' === 2);  //結果為false

2、對於Array,Object等高階型別,== 和 === 是沒有區別的。 進行“指標地址”比較。 3、基礎型別與高階型別,== 和 === 是有區別的。 a) 對於 ==,將高階轉化為基礎型別,進行“值”比較。 b)因為型別不同, === 結果為false。

 var a = '1';   //基本資料型別:String
 var b = 1;  //基本資料型別:Number
 var c = [1,2]  //引用型別:Array
 var d = [1,2]  //引用型別:Array
  var e = c //e指向的是c的地址值
 console.log(a == b) //結果為:true
 console.log(a === b) //結果為:false
 console.log(c === d) //結果為:false
 console.log(e === c)  //結果為:true
  console.log(e == c)  //結果為:true

JavaScript中undefined和null

1、undefined和null的區別

undefined代表定義未賦值 null定義並賦值了,只是值為null

2、什麼時候應該給變數賦值為null呢?

a)初始賦值,表明將要賦值為物件 b)結束前,讓物件成為垃圾物件(被垃圾回收器回收)

3、嚴格區別變數型別與資料型別

資料型別: *基本型別 *物件型別 變數的型別(變數記憶體值的型別) *基本型別:儲存的是基本型別的資料 *引用型別:儲存的是地址值

function Person (name, age) {// 建構函式  型別
    this.name = name
    this.age = age
  }
  var p = new Person('tom', 12) // 根據型別建立的例項物件
  
// 1. undefined與null的區別?
  var a
  console.log(a)  // undefined
  a = null
  console.log(a) // null
  
 //起始
  var b = null  // 初始賦值為null, 表明將要賦值為物件
  //確定物件就賦值
  b = ['atguigu', 12]
 //最後
  b = null // 讓b指向的物件成為垃圾物件(被垃圾回收器回收)

JavaScript中的分號問題

1、js一條語句的後面可以不加分好 2、是否加分號是編碼風格問題,根據個人的習慣愛好,並不影響結果 3、在下面兩種情況下不加分好會有問題 a)小括號開頭的前一條語句 b)中方括號開頭的前一條語句 4、解決方法:在首行加分號

 var a = 3
  ;(function () {
  })()
  /*
   錯誤理解
   var a = 3(function () {
   })();
  */
  var b = 4
  ;[1, 3].forEach(function () {
  })
  /*
  錯誤理解
   var b = 4[3].forEach(function () {
   })
   */