【克服 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
,並使用 call
將 this
改為陣列 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'
,則所有的檔都會變成嚴謹模式。