# 前端工程師面試題 Day1 ###### tags: `面試` ## Q1 undefined 和 null 的差別 1. `undefined` * 指的是變數沒有宣告,或是已經宣告但沒有賦值。 * Javascript 將未賦值的變數預設為 undefined。 * typeof undefined = undefined。 * 當要取用一個物件的屬性或陣列的元素時,若該屬性/元素不存在,則回傳 undefined。 * 若一個函式需要參數傳入,但在調用函數時該元素不存在,回傳 undefined。 * 轉換成數值時為 NaN。 * 不是有效的 JSON。 2. `null` * 表示空對象,沒有值的值。 * 用來給開發者宣告空值的。 * typeof null 回傳 object。 * 轉換成數值時為 0。 * 是有效的 JSON。 ### 相似處 1. 都沒有屬性及方法,也不能額外添加屬性方法。 2. 皆為 Falsy 值。 3. 皆為原始型別。 ### 特別 ```javascript null == undefined //true null === undefined //false ``` ### 延伸 強制轉型 https://www.cythilya.tw/2018/10/15/coercion/ ### 參考 https://www.jstips.co/zh_tw/javascript/differences-between-undefined-and-null/ https://snh90100.medium.com/javascript%E4%B8%ADundefined%E5%92%8Cnull%E7%9A%84%E5%B7%AE%E5%88%A5-1f48e9be5e02 https://medium.com/@hooviva77/javascript%E5%9F%BA%E7%A4%8E-%E4%B8%80-null-%E8%B7%9F-undefined-%E7%9A%84%E5%B7%AE%E5%88%A5-153d8e6adf55 ## Q2.Reset CSS 是甚麼 由於每個 HTML 標籤都有 CSS 預設值設定,早期各個瀏覽器都有各自的預設樣式,因此為了讓程式碼在各個瀏覽器間不會樣式跑掉,所以需要重置 CSS 預設樣式。 最常見的有兩個: 1. CSS Reset (meyerweb 提供): 沒有提供 CDN ,就是直接複製到 CSS 樣式的最前面。 只有更新到 2.0 (2011) 2. normalize.css: 保留了一些瀏覽器預設的樣式,並採納了所有的瀏覽器的樣式差異去做調整。 有在持續更新,也支援 HTML5。 很多 CSS 框價都選用 normalize.css ,例如 bootstrap。 ### 參考 https://israynotarray.com/css/20210807/3641451940/ https://andy6804tw.github.io/2021/05/23/css-reset/ [Reset css](https://meyerweb.com/eric/tools/css/reset/) [Normalize.css](https://necolas.github.io/normalize.css/) ## Q3. Hoisting 是甚麼 1. var 宣告提升。 2. function 宣告提升。 3. function 優先權大於 var。 4. function > arguments > var 5. let 跟 const 也有 hoisting 的效果,只是提升後的行為不一樣,let 跟 const 沒有初始化為 undefined ,而且在賦值前取值會發生錯誤 TDZ ### 參考 https://developer.mozilla.org/zh-TW/docs/Glossary/Hoisting https://blog.techbridge.cc/2018/11/10/javascript-hoisting/
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up