Javascript面试题

作者: BigElephant | 来源:发表于2016-04-07 16:56 被阅读213次

    1 引用类型和基本类型

    1.1 原始对象
    var a = 1;
    a.a = 2;
    console.log(a.a); //undefined
    
    1.2 引用类型
    var a = {n:1};
    var b = a;
    a.x = a = {n:2};
    
    console.log(a.x);//undefined
    console.log(b.x);//[object object]
    

    2 类型转换

    运算过程的转换原则:

    • string与number相加,变成 string
    • string与number相减,变成number
    function foo1(a) {
      return a + '01';
    }
    function foo2(a) {
      return  '010' - 010;
    }
    foo1(01);// '101'
    foo2(010);// 0开头代表八进制,010表示8, 输出2
    

    3 写一个function,清楚字符串前后的空格

    if (!String.prototype.trim) {
      String.prototype.trim = function () {
        return this.replace(/^\s+/, "").replace(/\s+$/, "");
      }
    }
    //test the function
    var str = "   test string   ".trim(); 
    console.log(str === "test string");//true
    

    4 写一个function,实现深拷贝

    function deepCopy(obj) {
      var ret, k, b;
            ret = (obj instanceof Array) ? [] : {};
      for (k in obj) {
        if (obj[k] instanceof Array || obj[k] instanceof Object) {
          //利用递归逐个复制obj中的属性
          ret[k] = deepCopy(obj[k]);
        } else {
          ret[k] = obj[k];
        }
      }
      
     return ret;
    }
    

    5 数组操作

    5.1 消除数组里面重复的元素
    var myArray = [11,2,3,4,5,11,4,7,9];
    var arr = myArray.filter(function (elem, pos, self) {
      //elem表示数组中的某一个元素,pos表示这个元素在数组中的位置,self表示这个数组
    //indexOf会取得最先匹配的一个元素的位置,比如elem为11是,self.indexOf(elem) = 0
      return self.indexOf(elem) == pos;
    })
    console.log(arr);//[11,2,3,4,5,7,9];
    
    5.2 给数组进行排序
    var arr = [11, 2, 28, 5, 8, 4, 3]
    arr.sort(function (after, before) {
     /*after表示靠后的元素,before是考前的元素,如果返回时true,才执行排序,最后是从小到大*/
      return after - before;
    })
    

    相关文章

      网友评论

        本文标题:Javascript面试题

        本文链接:https://www.haomeiwen.com/subject/fbnmlttx.html