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 相关文章推荐
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
AngularJS辅助库browserTrigger用法示例
Nov 03 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
概述jQuery中的ajax方法
Dec 16 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
Apr 18 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
浅谈node的事件机制
Oct 09 Javascript
JavaScript中常见内置函数用法示例
May 14 Javascript
JS实现倒计时图文效果
Nov 17 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
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中的表达式简述
2016/05/29 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
2020/09/22 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
维德科技C#面试题笔试题
2015/12/09 面试题
幼儿园园长岗位职责
2013/11/26 职场文书
三八节主持词
2014/03/17 职场文书
机关节能减排实施方案
2014/03/17 职场文书
合作意向协议书
2015/01/29 职场文书
搞笑老公保证书
2015/02/26 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python
MYSQL如何查看操作日志详解
2022/05/30 MySQL