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


Posted in Javascript onAugust 27, 2019

本文实例讲述了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.3water.com/code/HtmlJsRun测试上述代码运行效果。

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

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

Javascript 相关文章推荐
JavaScript 开发中规范性的一点感想
Jun 23 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
js操作iframe兼容各种主流浏览器示例代码
Jul 22 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
微信小程序canvas拖拽、截图组件功能
Sep 04 Javascript
JS实现导航栏楼层特效
Jan 01 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
May 11 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 #Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 #jQuery
JS多个表单数据提交下的serialize()应用实例分析
Aug 27 #Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 #Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 #Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 #Javascript
使用Vue.js中的过滤器实现幂方求值的方法
Aug 27 #Javascript
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
表单内同名元素的控制
2006/11/22 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python入门教程之if语句的用法
2015/05/14 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python @property使用方法解析
2019/09/17 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
销售找工作求职信
2013/12/20 职场文书
促销活动策划方案
2014/01/12 职场文书
会议接待欢迎标语
2014/10/08 职场文书
2015年仓库工作总结
2015/04/09 职场文书
员工辞职信范文大全
2015/05/12 职场文书
入党群众意见范文
2015/06/02 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android