JS常见面试试题总结【去重、遍历、闭包、继承等】

 更新时间:2019年08月27日 11:42:54   作者:zhensg  
这篇文章主要介绍了JS常见面试试题,总结分析了javascript去重、遍历、闭包、继等相关算法与操作技巧,需要的朋友可以参考下

本文实例讲述了JS常见面试试题。分享给大家供大家参考,具体如下:

JavaScript面试题总结

1,首先是数组去重算法:给一个数组,去掉重复值

(function() {
    var arr = [1, 2, 3, 3, 4, ];
    function unique() {
      var result = [];
      var tem = {};
      for (var i = 0; i < arr.length; i++) {
        if (!tem[arr[i]]) {
          result.push(arr[i]);
          tem[arr[i]] = 1;
        }
      }
      return result;
    }
})();

2,多维数组,至少3层的遍历,将数组整合一维数组,网上给出的方案

//遍历多维数组
var arr = [1, 2, 3, [4, [5, [6]]]]; // arr.length
Array.prototype.each = function(fn) {
  try {
    //1 目的: 遍历数组的每一项 //计数器 记录当前遍历的元素位置
    this.i || (this.i = 0); //var i = 0 ;
    //2 严谨的判断什么时候去走each核心方法
    // 当数组的长度大于0的时候 && 传递的参数必须为函数
    if (this.length > 0 && fn.constructor == Function) {
      // 循环遍历数组的每一项
      while (this.i < this.length) { //while循环的范围
        //获取数组的每一项
        var e = this[this.i];
        //如果当前元素获取到了 并且当前元素是一个数组
        if (e && e.constructor == Array) {
          // 直接做递归操作
          e.each(fn);
        } else {
          //如果不是数组 (那就是一个单个元素)
          // 这的目的就是为了把数组的当前元素传递给fn函数 并让函数执行
          //fn.apply(e,[e]);
          fn.call(e, e);
        }
        this.i++;
      }
      this.i = null; // 释放内存 垃圾回收机制回收变量
    }
  } catch (ex) {
    // do something
  }
  return this;
}

3,获得url查询参数方案

1)一个是用正则表达式方法

//获取url参数
function GetQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  //js match返回的是一数组
  var r = location.search.substr(1).match(reg);
  if (r != null) {
    return r[2];
  } else {
    return null;
  }
}

2)另外一种就是利用split结合数组遍历实现,这个比较容易实现就不贴代码了

4,正则表达式去掉空格

/**去掉字符串前后所有空格*/
function trim(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}

5,闭包的概念考察

6,原型继承如何实现,原型继承有两种方案

1)第一种是利用prototype

var obj={name:'seven'};
var a=function(){};
a.prototype=obj;
var aa=new a();
alert(aa.name);

 2)第二种是利用apply或者call

function people(name,age){
  //属性
  this.name=name;
  this.age=age;
  //方法
  this.show=function(){
    console.log("my name is"+this.name+" and I am "+this.age+" years old");
  };
}
function student(name,age,school){
  people.apply(this,arguments);
  this.school=school;
  this.showYourself=function(){
    console.log("my name is"+this.name+" and I am "+this.age+" years old"+" my school is"+ this.school);
  };
}
var tom=new student('tom','19','xtu');
tom.showYourself();

7,ES6常用知识点考察

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • 完美解决input[type=number]无法显示非数字字符的问题

    完美解决input[type=number]无法显示非数字字符的问题

    下面小编就为大家带来一篇完美解决input[type=number]无法显示非数字字符的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 浅谈js-FCC算法Friendly Date Ranges(详解)

    浅谈js-FCC算法Friendly Date Ranges(详解)

    下面小编就为大家带来一篇浅谈js-FCC算法Friendly Date Ranges(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 使用apifm-wxapi模块中的问题及解决方法

    使用apifm-wxapi模块中的问题及解决方法

    这篇文章主要介绍了使用apifm-wxapi模块中的问题及讲解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于JavaScript实现一定时间后去执行一个函数

    基于JavaScript实现一定时间后去执行一个函数

    在实际需要中可能需要规定在指定的时间之后再去执行一个函数以达成期望的目的,这也就是一个定时器效果,本文给大家介绍基于JavaScript实现一定时间后去执行一个函数的相关知识,感兴趣的朋友一起学习吧
    2015-12-12
  • 关于javascript解决闭包漏洞的一个问题详解

    关于javascript解决闭包漏洞的一个问题详解

    闭包在JavaScript高级程序设计(第3版)中是这样描述:闭包是指有权访问另一个函数作用域中的变量的函数,下面这篇文章主要给大家介绍了关于javascript解决闭包漏洞的一个问题的相关资料,需要的朋友可以参考下
    2022-11-11
  • 详解用async/await来处理异步

    详解用async/await来处理异步

    这篇文章主要介绍了详解用async/await来处理异步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • js获取光标位置和设置文本框光标位置示例代码

    js获取光标位置和设置文本框光标位置示例代码

    本实例描述了如何用Javascript来控制和获取文本框/文本域的鼠标光标位置,以下代码兼容IE和Chrome,Firefox,大家参考使用吧
    2014-01-01
  • Js过滤空格的实现代码

    Js过滤空格的实现代码

    Js空格过滤代码,这个实用性很强,可以省去用动态语言过滤字符的麻烦,减轻服务器压力,而且JS执行速度较快
    2013-03-03
  • JS冒泡事件与事件捕获实例详解

    JS冒泡事件与事件捕获实例详解

    这篇文章主要介绍了JS冒泡事件与事件捕获,结合实例形式分析了javascript冒泡的原理与阻止冒泡的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • JavaScript中文件流的处理场景及方法

    JavaScript中文件流的处理场景及方法

    作为一名前端开发,我们平时也少不了对文件流数据进行处理,今天简单整理一下日常开发中比较常见的一些处理文件流的场景及处理方法,希望可以帮助到大家
    2023-09-09

最新评论