面試遇到的問題總結一下

js冒泡

  • 理解javascript

    DOM樹中子節點包含在父節點中,點擊子節點至關於同時點擊了子節點與父節點,與父節點的父節點,最終的根節點就是document和windows。前端

    事件從觸發點開始,逐層向上傳遞的過程就是冒泡java

  • 阻止冒泡es6

    • 阻止默認行爲
    if(event.stopPropagation){
        event.stopPropagation();
    }else{
        event.cancelBubble = true;
    };
    複製代碼
    • 或者,不阻止冒泡過程,修改執行的函數方法:
    event.target == event.currentTarget
    複製代碼

    判斷一下點擊的是不是當前節點。json

    這個方法的缺點是:須要處理的節點多的時候重複代碼多,效率低。windows

    • jq的return false

    javascript的return false只會阻止默認行爲,而使用jQuery的話則既阻止默認行爲又防止對象冒泡。性能優化

    原生js,只會阻止默認行爲,不會中止冒泡bash

前端的性能優化

參考一下:異步

前端性能優化方案?前端性能

頁面適配有那些方法

flex佈局   百分比    rem
複製代碼

ie兼容問題

  • ie7 overflow:hidden;失效

    是由於子元素有定位,解決辦法是給父元素加定位樣式;

  • ie下input點擊有邊框

    • 設置按鈕爲none,而後在按鈕外面套一層來實現邊框的效果

    • 或者input { filter:chroma(color=#000000); }

      注:由於ietest中沒有濾鏡功能,因此不能在這個軟件裏測試效果

  • IE6 IE7 IE8(Q) 不支持JSON.parse()

    JSON.parse() 方法用來解析JSON字符串,構造由字符串描述的JavaScript值或對象。提供可選的reviver函數用以在返回以前對所獲得的對象執行變換(操做)。

    問題:使用了 JSON 對象的腳本代碼在 IE6 IE7 IE8(Q) 中運行的時候可能會拋出異常,致使功能失效。

    解決:使用eval和new Function方式代替json.parse

    //使用兩種簡單的方式解析 JSON 格式字符串

    json1 = eval("(" + jsonStr + ")")

    json2 = (new Function("return " + jsonStr))();

  • CSS hack

js異步的方法

參考一下: js異步方案

es6

  • 箭頭函數的最大的好處是什麼

    箭頭函數內部的this是詞法做用域,由上下文肯定;

    箭頭函數徹底修復了this的指向,this老是指向詞法做用域,也就是外層調用者obj:

    原來:

    var obj = {
        birth: 1990,
        getAge: function () {
            var b = this.birth; // 1990
            var fn = function () {
                return new Date().getFullYear() - this.birth; // this指向window或undefined
            };
            return fn();
        }
    };
    複製代碼

    箭頭函數:

    var obj = {
        birth: 1990,
        getAge: function () {
            var b = this.birth; // 1990
            var fn = () => new Date().getFullYear() - this.birth; // this指向obj對象
            return fn();
        }
    };
    obj.getAge(); // 25
    複製代碼

再面再總結。。。

相關文章
相關標籤/搜索