1. 程式人生 > >前端面試--js程式碼片段(基礎中的基礎,持續更新中)

前端面試--js程式碼片段(基礎中的基礎,持續更新中)

程式碼片段1:

 var arr1 = [1,2,3,4,5]
   var arr2 = []
    for(var i = 0; i < arr1.length; i ++) {
      arr2.push(function(){   
        alert(i)
      })
    }
    arr2[0]()   

此程式碼在呼叫arr20方法以後,輸出都是5;
執行的順序是:for迴圈遍歷i為01234;然後呼叫了5次function函式,但是並沒有執行。只在最後的arr20呼叫,所以,無論[Num]寫的幾,alert都是5。

程式碼片段2

   var x = 3;
   var foo = {
     x: 2,
     baz: {
       bar: function() { 
         return this.x 
       }
     }
   }
   Object.prototype.x = 20
   var go = foo.baz.bar  //  函式體
   console.log(go())     //  3
   console.log(foo.baz.bar())  //  undefined

本題考查的是對this指向的理解,與實際運用。
第一個log是把包含this的函式體賦值給了變數go,該變數前無引用,所有預設指向window,故為3;
第二個log,把包含this的函式體指向了foo.baz;但是該部分沒有x值,故為undefined。

程式碼片段3:
請寫出一段去除空白字元的原型方法:

 String.prototype.trim = function(){
   // return this.replace(/\s/g, "");
    return this.split(" ").join("") 
   }        
  console.log('a a bc de f'.trim())

這種題也是面試常見題 ,大家要加油!

程式碼片段4:

 var a = 1
 function test(){
     a=3
     return 
     function a(){

     }
   }
   test();
   console.log(a, '--a--')//1

這裡的function a() {} 等於 var a = function(){} , 用var宣告a,相當於把函式體內部的a私有化了,所以,log的時候,a為1.

程式碼片段5
排序題也會必考的哦!請根據傳入的引數n( ) 對一堆陣列(純數字)按照距離n最近的順序排列(距離即使數字與n的 差值的絕對值)

  var arr = [7, 28, -1, 0, 11, 33]
  var sortNum=[]
     function sort(n){
       for(let i = 0; i<arr.length; i++){
         for(let j = i+1; j<arr.length; j++){
           if(Math.abs(arr[i] - n) > Math.abs(arr[j] - n)){
             console.log(123)
             let _temporary = arr[i]
             arr[i] = arr[j]
             arr[j] = _temporary
           }
         }
       }
     console.log(arr, '--排序以後---')
     }
     sort(8)

程式碼片段 6
關於正則的一些補充

var str = ' 1中 國我愛你123abc~ . '
var test = (/^1$/g).test('1') //正則.test(字串);返回true或者false
var test1 = str.search(/\d/)//查詢第一個數字的下標
var test2 = str.match('他')//找到返回下標,未找到返回null
var test3 = str.replace(/\s/g, '*')//替換,把所有的空白字元替換成*

console.log(test2, '--str--')
/d --所有數字 
/D --除了數字以外
/s -- 空格
/w -- 字母?
/W -- 除了字母
g -- 全域性查詢
i -- 不去分大小寫

程式碼片段 7

//陣列去重
  var arr = [1,2,2,3,3,4,5]
   arr1=[]
   for(let i = 0; i < arr.length; i ++) {
     if(arr1.indexOf(arr[i]) < 0) {
       arr1.push(arr[i])
     }
   }
   console.log(arr1)
--或 -- 
利用set自帶去重屬性
 console.log([...new Set(arr)])

程式碼片段 8

統計字串中,字母次數
var str = 'aaabbcqweqweqwe'
obj = {}
for(var i =0; i<str.length; i ++ ) {
  var v = str.charAt(i)
  if( obj[v] == undefined ){	//遍歷物件中當前鍵是否存在
    obj[v] = {}
    obj[v].count = 1;
    obj[v].value = v;
  }else {
    obj[v].count = ++ obj[v].count
  }
}

for(key in obj){
  document.write(obj[key].value +'='+obj[key].count+'&nbsp;'); // a=4  b=3  c=4  d=2  f=1  g=1  h=1 
}