JS:前端面試題(二)

1.null,undefined 的區別?

null 表示一個對象被定義了,值為“空值”;

undefined 表示不存在這個值。

typeof undefined //"undefined"

undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。當嘗試讀取時會返回 undefined;

例如變量被聲明瞭,但沒有賦值時,就等於undefined

typeof null //"object"

null : 是一個對象(空對象, 沒有任何屬性和方法);

例如作為函數的參數,表示該函數的參數不是對象;

注意:在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined

再來一個例子:

JS:前端面試題(二)

2.說幾條寫JavaScript的基本規範?

(2).請使用 ===/!==來比較true/false或者數值

(3).使用對象字面量替代new Array這種形式

(4).不要使用全局函數。

(5).Switch語句必須帶有default分支

(6).函數不應該有時候有返回值,有時候沒有返回值。

(7).for循環必須使用大括號

(8).if語句必須使用大括號

(9).for-in循環中的變量 應該使用var關鍵字明確限定作用域,從而避免作用域汙染。

3.eval是做什麼的?

它的功能是把對應的字符串解析成JS代碼並運行;

應該避免使用eval,不安全,非常耗性能(2次,一次解析成js語句,一次執行)。

由JSON字符串轉換為JSON對象的時候可以用eval,var obj =eval('('+ str +')');

4.javascript 代碼中的"use strict";是什麼意思 ? 使用它區別是什麼?

use strict是一種ECMAscript 5 添加的(嚴格)運行模式,這種模式使得 Javascript 在更嚴格的條件下運行。

使用它區別是:

(1).使JS編碼更加規範化的模式,消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為。

(2).默認支持的糟糕特性都會被禁用,比如不能用with,也不能在意外的情況下給全局變量賦值;

(3).全局變量的顯示聲明,函數必須聲明在頂層,不允許在非函數代碼塊內聲明函數,arguments.callee也不允許使用;

(4).消除代碼運行的一些不安全之處,保證代碼運行的安全,限制函數中的arguments修改,嚴格模式下的eval函數的行為和非嚴格模式的也不相同;

(5).提高編譯器效率,增加運行速度;

(6).為未來新版本的Javascript標準化做鋪墊。

5.["1", "2", "3"].map(parseInt) 答案是多少?

[1, NaN, NaN]

因為 parseInt 需要兩個參數 (val, radix),其中 radix 表示解析時用的基數。

map 傳了 3 個 (element, index, array),對應的 radix 不合法導致解析失敗。

parseInt方法將會通過以下方式被調用

JS:前端面試題(二)

parseInt的第二個參數radix為0時,ECMAScript5將string作為十進制數字的字符串解析;

parseInt的第二個參數radix為1時,解析結果為NaN;

parseInt的第二個參數radix在2—36之間時,如果string參數的第一個字符(除空白以外),不屬於radix指定進制下的字符,解析結果為NaN。

parseInt("3", 2)執行時,由於"3"不屬於二進制字符,解析結果為NaN。

6.快速 排序的思想並實現一個快排?

“快速排序”的思想很簡單,整個排序過程只需要三步:

(1)在數據集之中,找一個基準點

(2)建立兩個數組,分別存儲左邊和右邊的數組

(3)利用遞歸進行下次比較

JS:前端面試題(二)

JS:前端面試題(二)

希望這些面試題目能對各位有所幫助,小編這裡呢整理了自己這麼幾年來學習web前端的資料,相信有很多小夥伴學習web前端,那麼就關注小編,私信【學習】,即可免費獲得哦!


分享到:


相關文章: