記一次百度的二面的面試題

1.閉包加做用域問題

let test 
let a = ()=>{
    let n=99
    test = ()=>{
        n++;
    }
    let a1 = ()=>{
        console.log(n)
    }
    return a1
}
let a1 = a()
let a2 = a()

test()
a1()
a2()

打印結果是99 100html

函數聲明瞭兩次,有一次覆蓋,最後的覆蓋了前面的,要是隻聲明一遍,那麼a1()打印的就是100node

2.做用域問題

let a = 1
function add(a){
 return a = a + 1
}
console.log(a)
add(a)
console.log(a)
function add(a){
 return a = a + 4
}
add(a)
console.log(a)

打印 1 1 1git

反直覺自帶坑的題github

3.找鼠標最近的a標籤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id='wrap'>
        <a href="">連接1</a>
        <br>
        最美的不是下雨天是你
        <a href="">連接2</a>
        <br>
        最美的不是
        <a href="">連接3</a>
        <br>
        最美的不是下雨
        <a href="">連接4</a>
        最美的不是下雨天
        <a href="">連接5</a>
        <br>
        最美的不是下雨天是你
        <a href="">連接6</a>
    </div>
    <script>
        window.onload=function(){ 
          let oa = document.getElementsByTagName("a"); 
          let arr = []
          oa = Array.from(oa)
          oa.forEach(function(element, index) {
              arr.push([element.offsetLeft,element.offsetTop])
          });
          window.addEventListener('mousemove',(e)=>{
            let LEN =[]
            arr.forEach( function(element, index) {
                let len = Math.pow(Math.pow(Math.abs(e.clientX-element[0]),2)+Math.pow(Math.abs(e.clientY-element[1]),2),0.5).toFixed(3)
                LEN.push(len)
            });
            let c = Math.min(...LEN)
            let key = LEN.indexOf(c.toString())
            for(let i=0;i<oa.length;i++){
                oa[i].style.color = "#999"
            }
            if(oa[key]){
                oa[key].style.color = "red"
            }
          })
        } 
        // 最後來個防抖節流完美
    </script>
</body>
</html>

4.寫vDom

  1. 用對象表示dom結構
  2. 根據json生成dom
  3. dom變化記錄變化
  4. 在真實dom更新變化

vdom好在哪裏???

Virtual DOM 真正的價值歷來都不是性能,而是它
1) 爲函數式的 UI 編程方式打開了大門;
2) 能夠渲染到 DOM 之外的 backend,好比 ReactNative。面試

看會了,不必定真的會寫,你會寫了,可是和麪試官問的題會有些區別?編程

自行拿捏json

一場面試說明不了你的能力,也影響不了我想作的事,我依然熱愛,依然喜歡研究和學習,依然會繼續個人源碼架構方向,我不喜歡那種繞來繞去爲了應付面試而學的基礎,我不會由於面什麼而看什麼,我只想研究我想學的,把學到的分享給社區,我就很開心了,若是可以作開源,我會更開心的閉包

附上最新寫的koa源碼解讀架構

相關文章
相關標籤/搜索