JS中常見算法問題

JS中常見算法問題

1. 闡述JS中的變量提高(聲明提早)

答:將全部的變量提高噹噹前做用域的頂部,賦值留在原地。意味着咱們能夠在某個變量聲明前就使用該變量。
雖然JS會進行變量提高,但並不會執行真正的初始化過程。
按值傳遞:兩變量間賦值,或向函數中傳遞參數時,都是將原變量中的值複製一個副本給對方,修改一方,另外一方不受影響。
引用類型的對象之間相互賦值時,只是將地址賦值給了對方,所以改變原對象中的內容,因爲地址並未發生改變,所以也會引起新變量內容的改變。算法

2.闡述use strict;的做用

答:指定瀏覽器按照嚴格模式去渲染。優點:強制開發者避免使用未聲明的變量。對於老版本的瀏覽器或者執行引擎會自動忽略該指令。瀏覽器

3.解釋什麼是事件冒泡,處理方式

答:即某個事件不只會觸發當前元素,還會以嵌套順序傳遞到父元素中。
關於事件流:IE提出冒泡流,即由內到外;網景提出了捕獲流,即由外向內。
一個完整的JS事件流,是從window開始,最終回到window的一個過程。
事件流的三個階段:1.捕獲階段,2.目標階段,3.冒泡階段。函數

防止冒泡和捕獲:
w3c的方法是e.stopPropagation(),IE則是使用e.cancelBubble = true
```
function stopBubble(e) { 
    //若是提供了事件對象,則這是一個非IE瀏覽器 
    if ( e && e.stopPropagation ) {
        //所以它支持W3C的stopPropagation()方法 
        e.stopPropagation();
    } else {
        //不然,咱們須要使用IE的方式來取消事件冒泡 
        window.event.cancelBubble = true;
    }    
}
```
取消默認事件
w3c的方法是e.preventDefault(),IE則是使用e.returnValue = false;
```
//阻止瀏覽器的默認行爲 
function stopDefault( e ) { 
    //阻止默認瀏覽器動做(W3C) 
    if ( e && e.preventDefault ){
        e.preventDefault(); 
    } else {
        //IE中阻止函數器默認動做的方式
        window.event.returnValue = false;
    }     
    return false; 
}
```

4.

相關文章
相關標籤/搜索