一些前端基礎(chǔ)問(wèn)題

  1. typeof出來(lái)的類(lèi)型
    • number, string, boolean, object, function, undefined
  2. 隱式類(lèi)型轉(zhuǎn)換的情形
    • 加減乘除號(hào),+ - * /
      • +號(hào)用作數(shù)字相加時(shí)渊抄,累加數(shù)字钧惧,1 + true = 2
      • +號(hào)用作字符串連接時(shí),把其他非字符串轉(zhuǎn)為字符串
      • null會(huì)轉(zhuǎn)換為0掉蔬,undefined轉(zhuǎn)換為NaN
      • NaN不等于NaN廊宪,這是由浮點(diǎn)數(shù)的精度決定的
    • isNaN
      • isNaN()判斷NaN不可靠矾瘾,因?yàn)闀?huì)存在隱式轉(zhuǎn)換
        • isNaN('foo' || undefined || {} || {age: 'foo'}) // 都為true
        • 使用 x !== x 來(lái)判斷是否為NaN
        • 或者使用ES6的Number.isNaN(要檢驗(yàn)的值)
    • 真值運(yùn)算,if && ||
      • false, 0, -0, “”, NaN, null, undefined箭启,會(huì)轉(zhuǎn)換為false
      • 有一個(gè)可以具有默認(rèn)值得可選參數(shù)的函數(shù)會(huì)讓真值判斷失效
        • function point(x, y) { if (!x) { x = 320; } if (!y) { y = 240; } return { x: x, y: y }; }
      • 檢測(cè)undefined的更加準(zhǔn)確的方法是用typeof操作壕翩,可以區(qū)分開(kāi)0和undefined
        • function point(x, y) { if (typeof x === "undefined") { x = 320; } if (typeof y === "undefined") { y = 240; } return { x: x, y: y }; }
      • 或者 if (x === undefined) { ... },利用參數(shù)與undefined作比較
  3. call, apply, bind
    • call的第一個(gè)參數(shù)是要綁定this的對(duì)象傅寡,第二個(gè)參數(shù)開(kāi)始是原有函數(shù)中的參數(shù)
    • apply第一個(gè)參數(shù)同call放妈,后面的參數(shù)傳數(shù)組
    • bind是在函數(shù)本身后面加要bind的對(duì)象,并且要使用表達(dá)式函數(shù)荐操,而不是聲明式函數(shù)
  4. 作用域
    • 作用域鏈:當(dāng)前作用域找不到芜抒,就去父級(jí)找
    • 函數(shù)作用域是定義時(shí)候產(chǎn)生的,不是執(zhí)行時(shí)候產(chǎn)生的
  5. 閉包
    • 函數(shù)作為返回值
    • 函數(shù)作為參數(shù)傳遞
    • 產(chǎn)生作用域鏈
  6. 前端使用異步的場(chǎng)景
    • 定時(shí)任務(wù)
    • 網(wǎng)絡(luò)請(qǐng)求
    • 事件綁定
  7. 跨域
    • 瀏覽器有同源策略托启,不允許ajax訪問(wèn)其他域的接口
      • 協(xié)議宅倒、域名、端口屯耸,有一個(gè)不同就算跨域
    • 可跨域的三個(gè)標(biāo)簽
      • img的src
      • link 拐迁、script 使用CDN
      • script用于JSONP
    • JSONP
    • 服務(wù)器端設(shè)置http header
  8. cookie, sessionStorage, localStorage的區(qū)別
    • cookie
      • 用于客戶端和服務(wù)器端通訊
      • 存儲(chǔ)量只有4KB
      • 所有http請(qǐng)求都帶著,會(huì)影響獲取資源的效率
      • API簡(jiǎn)單疗绣,需要封裝才能使用 document.cookie
    • sessionStorage线召,localStorage
      • 最大5M
      • 不用在請(qǐng)求中帶著
      • setItem(key, value), geiItem(key)
      • iOS safari隱藏模式下,localStorage.getItem會(huì)報(bào)錯(cuò)持痰,灶搜,簡(jiǎn)易使用try catch封裝
    • 區(qū)別
      • 容量
      • 是否攜帶到ajax中
      • API易用性
  9. 模塊化
    • 需要異步加載JS,使用AMD
    • 使用npm之后建議使用CommonJS
  10. 渲染頁(yè)面的過(guò)程
    • 加載資源的形式
      • 輸入U(xiǎn)RL或跳轉(zhuǎn)頁(yè)面加載html
      • 加載html中的靜態(tài)資源
    • 輸入U(xiǎn)RL到得到html的過(guò)程(加載一個(gè)資源的過(guò)程)
      • 瀏覽器根據(jù)DNS服務(wù)器得到域名的IP地址
      • 向這個(gè)IP的機(jī)器發(fā)送http請(qǐng)求
      • 服務(wù)器收到工窍、處理并返回http請(qǐng)求
      • 瀏覽器得到返回內(nèi)容
    • 瀏覽器渲染頁(yè)面的過(guò)程
      • 根據(jù)html結(jié)構(gòu)生成DOM Tree
      • 根據(jù)CSS生成樣式(CSSOM)
      • 將DOM和CSSOM整合成RenderTree
      • 根據(jù)RenderTree開(kāi)始渲染和展示
      • 遇到script標(biāo)簽時(shí)割卖,會(huì)執(zhí)行并阻塞渲染
  11. window.onload和document.DOMContentLoaded
    • 前者是全部資源加載完才執(zhí)行,包括圖片視頻
    • 后者是DOM渲染完即可執(zhí)行患雏,無(wú)需照顧圖片視頻
  12. 性能優(yōu)化
    • 原則
      • 多使用內(nèi)存鹏溯、緩存或其他方法
      • 減少CPU計(jì)算,減少網(wǎng)絡(luò)請(qǐng)求
    • 從哪入手
      • 加載頁(yè)面和靜態(tài)資源速度
        • 靜態(tài)資源的壓縮合并淹仑,把加載或請(qǐng)求數(shù)量減少
        • 靜態(tài)資源緩存
        • 使用CDN讓資源加載更快
          • CDN是不同區(qū)域的網(wǎng)絡(luò)優(yōu)化丙挽,就近加載
        • 使用SSR(后端渲染),數(shù)據(jù)直接輸出到html中
    • 頁(yè)面渲染速度
      • CSS放在前匀借,JS放在后
      • 懶加載
      • 減少DOM查詢颜阐,對(duì)DOM查詢做緩存
      • 減少DOM操作,多個(gè)操作盡量合并在一起執(zhí)行
      • 事件節(jié)流
      • 盡早執(zhí)行操作吓肋,如DOMContentLoaded
  13. 安全性
    • XSS凳怨,跨站請(qǐng)求攻擊
    • XSRF,跨站請(qǐng)求偽造
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市肤舞,隨后出現(xiàn)的幾起案子紫新,更是在濱河造成了極大的恐慌,老刑警劉巖李剖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俺叭,死亡現(xiàn)場(chǎng)離奇詭異邑闲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)惠猿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闹啦,“玉大人狸臣,你說(shuō)我怎么就攤上這事蹋砚。” “怎么了化焕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵萄窜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我撒桨,道長(zhǎng)查刻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任凤类,我火速辦了婚禮穗泵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谜疤。我一直安慰自己佃延,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布夷磕。 她就那樣靜靜地躺著履肃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坐桩。 梳的紋絲不亂的頭發(fā)上尺棋,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音绵跷,去河邊找鬼膘螟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碾局,可吹牛的內(nèi)容都是我干的荆残。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼净当,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼内斯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嘿期,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后埋合,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體备徐,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年甚颂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜜猾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡振诬,死狀恐怖蹭睡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赶么,我是刑警寧澤肩豁,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站辫呻,受9級(jí)特大地震影響清钥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放闺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一祟昭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怖侦,春花似錦篡悟、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至旗吁,卻和暖如春踩萎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背很钓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工香府, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人码倦。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓企孩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親袁稽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子勿璃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354