• 當前位置:首頁 > IT技術 > 其他 > 正文

    前端面試題每日3題——2022-09-06
    2022-09-06 22:42:40

    每日3題

    22 以下代碼執行后,控制臺中的輸出內容為?

    var a = [1, 2, 3];
    a.join = a.shift;
    console.log(a == 1 && a == 2 && a == 3);
    

    23 以下代碼執行后,控制臺中的輸出內容為?

    var arr = [0, 1];
    arr[5] = 5;
    var newArr = arr.filter((x) => {
      return x === undefined;
    });
    
    console.log(newArr.length);
    

    24 以下代碼執行后,控制臺中的輸出內容為?

    const value = 'value is' + !!Number(['0']) ? 'aaa' : 'bbb';
    console.log(value);
    

    公眾號【今天也要寫bug】獲取更多前端面試題

    答案與解析

    22

    // 答案:true
    // 考察強制類型轉換
    // == 操作會進行強制類型轉換
    // 如果操作數之一是對象,另一個是數字或字符串,
    // 會嘗試使用對象的valueOf()和toString()方法將對象轉換為原始值。
    // 如果 valueOf 返回基本類型,就按該值進行轉換,否則按 toString 的返回值轉換
    // 數組的 valueOf 返回它本身,所以按 toString 的返回值進行轉換
    // 對于數組對象,toString 方法在內部調用 join() 方法
    var a = [1, 2, 3];
    a.join = a.shift; // 在數組 a 上定義了一個 join 方法,并且該方法是 shift 的功能
    console.log(a == 1 && a == 2 && a == 3);
    // a == 1,觸發類型轉換
    // 觸發 a.toString() 內部調用 a.join(),即 a.shift() 返回 1,同時 a 變為 [2, 3]
    // 所以 a == 1 為 true
    // 同理 a == 2 和 a == 3 都為 true
    

    23

    // 答案:0
    // 考察數組的 filter 方法
    // filter() 方法創建一個新數組,其包含通過所提供函數實現的測試的所有元素。
    // filter 為數組中的每個元素調用一次傳入的回調函數,
    // 并利用所有使得回調函數返回 true 或等價于 true 的值的元素創建一個新數組。
    // 回調函數只會在已經賦值的索引上被調用,對于那些已經被刪除或者從未被賦值的索引不會被調用。
    
    var arr = [0, 1];
    arr[5] = 5; // 直接為索引 5 的元素賦值為 5,跳過的幾個元素均為 'empty',這些索引不會觸發回調函數
    var newArr = arr.filter((x) => {
      return x === undefined;
    }); // 所以這里沒有元素等于 undefined
    console.log(newArr.length); // 輸出 0
    

    24

    // 答案:aaa
    // 考察運算符優先級和強制類型轉換
    // 優先級:函數調用 > ! > + > 三元運算符
    //
    const value = "value is" + !!Number(["0"]) ? "aaa" : "bbb";
    console.log(value);
    
    // Number('0') => 0
    // !0 觸發類型轉換 => true,這些值會被轉換成 false:null、NaN、0、空字符串 ("" or '' or ``)、undefined
    // !true => false
    // 'value is' + false => 'value isfalse'
    // 條件運算符觸發類型轉換 => 'value isfalse' 轉換為 true
    // 最終輸出 aaa
    

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码