前端面試題解析

来源:http://www.cnblogs.com/yaoguanglei/archive/2017/10/16/7679136.html
-Advertisement-
Play Games

下麵舉例14道前端面試題選擇題(摘自妙味課堂) 1、 選項:A、object B、array C、arguments D、undefined 解析:arguments即是實參的集合,又稱類數組對象。他的類型是對象object。因此選A。 2、 選項:A、number B、undefined C、fu ...


下麵舉例14道前端面試題選擇題(摘自妙味課堂)

1、

(function(){
    return typeof arguments;
})()

  選項:A、object  B、array  C、arguments  D、undefined

  解析:arguments即是實參的集合,又稱類數組對象。他的類型是對象object。因此選A。

2、

var f = function g(){return 23;};
typeof g();

  選項:A、number  B、undefined  C、function  D、error

  解析:此函數是有名函數表達式,嚴格來說是不規範的。並且函數調用是 f(),而不是g(),g只在函數內部可以使用,其他地方使用都是不規範的。因此選D。

3、

(function(x){ delete x; return x; })(1)

  選項:A、1  B、null  C、undefined  D、error

  解析:此題考察delete的用法,delete是一元操作符,只能刪除對象里的屬性,或數組裡的元素。不能刪除變數、函數和函數的參數。就像遞增、遞減、賦值運算符一樣,delete也是有副作用的,它是用來做刪除操作,不是用來返回一個值的。

4、

var y = 1, x = y = typeof x;
x;

  選項:A、1  B、"number"  C、undefined  D、"undefined"

  解析:此題考查 = 賦值運算符。賦值運算符是從右往左賦值的。因此選D。

5、

(function f(f){
    return typeof f();
})(function(){return 1;})

  選項:A、"number"  B、"undefined"  C、"function"  D、error

  解析:形參是 f,typeof f() ,這個 f 是形參,這裡調用的是實參里的函數 。等於執行一次函數。執行函數返回的是一個值,就是1。所以類型是 number 。因此選A。註意運行時會報錯,不知道為什麼?求大神解釋

6、

var foo = {
  bar: function(){return this.baz;},
  baz:1    
};
(function(){
    return typeof arguments[0]()
})(foo.bar);

  選項:A、"undefined"  B、"object"  C、"number"  D、"function"

  解析:此題主要考查this用法,和傳參,作用域。開始的時候 this 指向 foo,但是閉包里 arguments[0] 指的是實參 foo.bar ,arguments[0]() 調用時 this 指向的是 window,window.baz 是不存在的。this 不看在哪裡定義,而是看在哪裡執行,看是誰在執行。因此選A。

7、

var foo = {
  bar : function (){ return this.baz },
  baz : 1  
}
typeof (f = foo.bar)();

  選項:A、"undefined"  B、"object"  C、"number"  D、"function"

  解析:此題跟上面一個是類似的。正常情況下,this 指向的是 foo 。但是 foo.bar 賦值給了 f ,this 還是會指向 window 。所以選 A 。

8、

var f = (function f(){ return "1"; }, function g(){ return 2;})();
typeof f;

  選項:A、"string"  B、"function"  C、"number"  D、"undefined"

  解析:( a , b , c )是分組選擇符,執行時只執行最後一個,可以測試,變數 f 就是 2 。所以選擇 C 。

9、

var x = 1;
if(function f(){}){
  x += typeof f;  
}
x;

  選項:A、1  B、"1function"  C、"1undefined"  D、NaN

  解析:首先函數聲明不允許寫在運算當中,例如 if 判斷,for 迴圈等。但是這樣寫也不會報錯,返回的是 true ,所以 if 語句會被執行 。其次函數名 f 不能在外部找到,它是局部作用域。因此選 C 。

10、

var x = [ typeof x,typeof y ][1];
typeof typeof x;

  選項:A、"number" B、"string" C、"underfined" D、"object"

  解析:本題有點迷惑人,不管變數 x 的值是什麼,typeof x 肯定是字元串,字元串的類型肯定是 “string” 。

11、

(function(foo){
    return typeof foo.bar;
})({ foo:{bar:1} });

  選項:A、"underfined" B、"object" C、"number" D、error

  解析:foo 是形參,{ foo: { bar:1 } }是實參,實參 . bar 是不存在的 。

12、

(function f(){
    function f(){ return 1; };
    return f();
    function f(){ return 2; };
})()

  選項:A、1 B、2 C、error D、undefined

  解析:本題考查函數預解析,其實函數在所有內容都沒有解析之前,就已經預解析過了,而第二個函數會把第一個覆蓋,當return f() 時,肯定是調用第二個函數。因此選 B 。

13、

function f(){ return f; }
new f() instanceof f;

  選項:A、true B、false 

  解析:正常情況下,構造函數是 f 的實例化,但是 f()  ==  f , 所以 f instanceof f 就沒有意義,返回false。

14、

with (function (x , underfined){}) length;

  選項:A、1 B、2 C、undefined D、error

  解析:with語句拖慢代碼性能,儘量避免使用。函數的 length 就是形參的 length 。undefined 也可以是形參 。因此選 B 。 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • 模態框嵌套 在開發中,遇到需要通過點擊事件觸發第一個模態框,觸發後通過事件喚起第二個模態框,並且通過事件觸發第三個模態框;即模態框嵌套。 模態框嵌套需要用一個模態框包裹所涉及嵌套的模態框,從而點擊觸發模態框不會亂掉。 HTML代碼如下: tabindex 模態框中tabindex屬性w3c的解釋是: ...
  • 前言 晚上逛論壇看到一篇對從事HTML5前端開發的文章寫的非常不錯,和目前的市場形勢差不多,然後我在其基礎上給大家進行加工總結一下分享給大家.今天我們談論的話題是<<為什麼從事HTML5前端開發越來越火,工資高,並且還漲的快>>,針對這個問題進行分析分析. 俗話說的好:”沒有調查,就沒有發言權”,同 ...
  • 一、介紹 這是紅寶書(JavaScript高級程式設計 3版)的讀書筆記第四篇,是紅寶書第四章內容(主要是變數和作用域問題),當然其中還有我個人的理解。紅寶書這本書可以說是難啃的,要看完不容易,挺厚的,要看懂更不容易,要熟練js更是難,中間需要不斷的積累與重溫。因此不是讀一兩遍就能把這書吃透,需要多 ...
  • 獲取驗證碼 var countdown = 60; var but = document.getElementById('time'); but.addEventListener('click', function (e) { setTime(this); }) function setTime (... ...
  • 假設有這樣一個數組: 我們想去掉數組中id重覆的對象,比如同樣id為2的兩個對象—— 我們該如何去做呢? 事實上,對於數組對象,傳統的去重方法無能為力,至於forEach()、filter()等迭代方法也不好使;真正能做到優雅去重的,是ES5新增加的一個方法——reduce() reduce()方法 ...
  • Bootstap這個框架本身已經包含了開髮網頁的眾多要素,包括了常用的工具以及擴展組件,如果你在開發頁面時覺得在某些方面還不夠的話,不妨看看最新收集的50個Bootstrap擴展插件,這些插件在我們平時開發頁面中經常會用到,從按鈕、麵包屑導航、日曆、樹形菜單、媒體播放器、以及可視化編輯器等等,如果認 ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...