前端面试--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 
} 

猜你喜欢

转载自blog.csdn.net/Allan_L/article/details/84146265