芯学苑专注java培训十年

当前位置  |首页常见问题 求职攻略 值得你学习的JavaScript经典面试题

值得你学习的JavaScript经典面试题

来源:2017-09-21关键词: JavaScript面试题

  JavaScript是一种直译式的编程语言,主要应用于web开发中。也因此,在IT行业,需要大量的 JavaScript 开发者。找工作的过程中,你在面试环节所展示的技术能力,会决定你获得工作的几率都多大,薪水有多少。在本文中,芯学苑小编给大家分享几个值得你学习的典型的JavaScript面试题,以及相关解决方法,这 5 个问题常被用来测试面试者的 JavaScript 技能。

  

值得你学习的JavaScript经典面试题


  问题1: 范围(Scope)

  思考以下代码:

  (function() {

  var a = b = 5;

  })();

  console.log(b);

  控制台(console)会打印出什么?

  答案

  上述代码会打印出5。

  这个问题的陷阱就是,在立即执行函数表达式(IIFE)中,有两个命名,但是其中变量是通过关键词var来声明的。这就意味着a是这个函数的局部变量。与此相反,b是在全局作用域下的。

  这个问题另一个陷阱就是,在函数中他没有使用"严格模式" ('use strict';)。如果 严格模式开启,那么代码就会报出未捕获引用错误(Uncaught ReferenceError):b没有定义。记住,严格模式要求你在需要使用全局变量时,明确地引用该变量。因此,你需要像下面这么写:

  (function() {

  'use strict';

  var a = window.b = 5;

  })();

  console.log(b);

  问题2: 创建 “原生(native)” 方法

  在String对象上定义一个repeatify函数。这个函数接受一个整数参数,来明确字符串需要重复几次。这个函数要求字符串重复指定的次数。举个例子:

  console.log('hello'.repeatify(3));

  应该打印出hellohellohello.

  答案

  一种可能的实现如下所示:

  String.prototype.repeatify = String.prototype.repeatify || function(times)

  {

  var str = '';

  for (var i = 0; i < times; i++) {

  str += this;

  }

  return str;

  };

  这个问题测试了开发人员对于javascript中继承的掌握,以及prototype这个属性。这也验证了开发人员是否有能力扩展原生数据类型的功能(虽然不应该这么做)。

  这个问题的另一个重点是验证你是否意识到并知道如何避免覆盖已经存在的函数。这可以通过在自定义函数之前判断该函数是否存在来做到。

  String.prototype.repeatify = String.prototype.repeatify || function(times)

  {/* code here *