JavaScript基礎拓展總結深入(== 和 ===的區別、undefined和null的區別,分號問題)
阿新 • • 發佈:2018-12-13
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 () {
})
*/