【克服 JS 】第七章 雜談

JavaScript 全攻略:克服 JS 的奇怪部分,第七章 雜談,學習紀錄。

Udemy 課程連結:

JavaScript 全攻略:克服 JS 的奇怪部分

Ch7 雜談

7-1 初始化

初始化(initialization)

7-2 「typeof」、「instanceof」與搞清楚這是什麼?

使用 typeof 這個運算子可以得到一個變數的型別:

var a = 3
console.log(typeof a)  // number

var b = "Hello"
console.log(typeof b)  // string

var c = {}
console.log(typeof c)  // object

var d = []
console.log(typeof d)  // object

陣列的型別顯示為 object,這不是我們要的。

如果要判斷變數是否為陣列,可以使用:

var d = []
console.log(Object.prototype.toString.call(d)) // [object Array]

利用基本物件的函數建構子執行基本物件的 toString,並使用 callthis 改為陣列 d

建立一個 Person 函式建構子,不回傳任何東西,設定一個變數等於 new Person

var e = new Person('Jane')
console.log(typeof e) // object
console.log(e instanceof Person) // true

typeof(e) 也是個物件,使用 instanceof 運算子可判斷物件是否在原型鏈上。

如果對特殊值使用 typeof

console.log(typeof undefined) //顯undefined

console.log(typeof null) //object

typeof null 會顯示 object 是 JavaScript 的一個萬年 bug。

函式也可以使用 typeof

var z = function() {}
console.log(typeof z) // function

可以檢查這個變數是否為函式。

7-3 嚴謹模式 Strict Mode

JavaScript 式非常自由的程式,容易造成一些未預期的問題,嚴謹模式(strict mode)可以幫你避免某些情況的錯誤。

嚴謹模式只需要在 JavaScript 檔案的開頭加上 'use strict' 即可。

'use strict'

var person

persom = {}
console.log(persom) // 不會執行這行

person 的 n 打成 m 了,會顯示錯誤: persom is not defined。

也可以加在函式中,這樣就只有函式產生的執行環境會使用嚴謹模式:

function logNewPerson() {
  'use strict'

  var person2
  persom2 = {}
  console.log(persom2)
}

var person
persom = {} //不會顯示錯誤
console.log(persom) //顯 object {}
logNewPerson() //顯示錯誤: persom2 is not defined

嚴謹模式在不同的瀏覽器可能會有不同的結果。

如果有將所有 js 檔案合併成一個檔時,只要第一個檔的開頭有加 'use strict',則所有的檔都會變成嚴謹模式。

參考資料

嚴謹模式 Strict mode|MDN

參考資料:

那克斯的學習筆記

TOP