1.null,undefined 的區別?
null 表示一個對象被定義了,值為“空值”;
undefined 表示不存在這個值。
typeof undefined //"undefined"
undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。當嘗試讀取時會返回 undefined;
例如變量被聲明瞭,但沒有賦值時,就等於undefined
typeof null //"object"
null : 是一個對象(空對象, 沒有任何屬性和方法);
例如作為函數的參數,表示該函數的參數不是對象;
注意:在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined
再來一個例子:
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方法將會通過以下方式被調用
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)利用遞歸進行下次比較
希望這些面試題目能對各位有所幫助,小編這裡呢整理了自己這麼幾年來學習web前端的資料,相信有很多小夥伴學習web前端,那麼就關注小編,私信【學習】,即可免費獲得哦!
閱讀更多 計算機語言 的文章
關鍵字: 跳槽那些事兒 JSON ECMAScript