# JS 三個問題 --- ## 請問這個 this 會印出甚麼, 代表甚麼? ``` function a() { console.log(this); } ``` ANS: 1. undefined 2. 不知道, 因為 this 取決于執行這個 function 時的環境 --------------------------------------------------- ## 請問這個會印出甚麼?? 做了甚麼事? ``` console.log(('b' + 'a' + + 'a' + 'a').toLowerCase()); ``` ANS: 1. banana 2. 因為先做了型別轉換, 但輸出後被小寫轉換 ``` ‘a’ 是算術運算子的寫法(一元運算子), 根據 JS 的特性, JS 會嘗試將 ‘a’ 轉換成數字 But, 就是這個 but, 因為字串無法成功轉換成數字(也沒有涵式幫忙, 且因為 ‘a’ 是文字) 所以會嘗試輸出 NaN(Not a Number) 的值 'b' + 'a' + NaN + 'a' → baNaNa 於是加上轉換小寫就成了 banana ``` --------------------------------------------------- ## 下面會印出甚麼? ``` var a = [1,2,3,4] var b = [1,2,3,4] console.log(a === b); // → 這裡會印出甚麼? var objA = { name: '別緊張, 你今天好嗎??' } var objB = { name: '別緊張, 你今天好嗎??' } console.log(objA === objB); // → 這裡會印出甚麼? ``` ANS: 兩個都會是 false, 在考 JavaScript 的比較會因為型別不同而有所差異 ---