问题1: 作用域

看一下下面的代码:

    (function(){
var a = b =5;
})();
console.log(b);

结果会输出什么?

答案:

5

这个问题考查的要点是两个不同的作用域,'a'被var声明成了一个局部变量,但是'b'实际上没有被定义,所以它是一个全局变量。

这个问题还牵扯到另个一个比较重要的问题,就是strict mode,如果你选择了strict mode,上面的代码就会报Uncaught ReferenceError,因为b没有被定义,它可以帮你检查出代码的一些问题:

    (function(){
'use strict';
var a = window.b =5;
})();
console.log(b);

问题2: 创建“native”方法

写一个重复打印字符串对象的方法,输入一个整数,这个整数代表重复打印的字数,比如:

  1. 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属性的了解程度。

Question 3: Hoisting

下面这段代码的输出结果是什么?

    function test(){
console.log(a);
console.log(foo());
var a =1;
function foo(){
return2;
}
} test();

答案

undefined和2。

上面的代码和下面这段是等效的:

    function test(){
var a;
function foo(){
return2;
}
console.log(a);
console.log(foo());
a =1;
}
test();

问题4: 在JavaScript中如何执行

通过下面的代码给出结果,解释一下你的答案:

    var fullname ='John Doe';
var obj ={
fullname:'Colin Ihrig',
prop:{
fullname:'Aurelio De Rosa',
getFullname:function(){
returnthis.fullname;
}
}
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());

答案:

Aurelio De Rosa 和John Doe。

问题5: call() 和 apply()

解决前面的问题之后让最后一个console.log()输出Aurelio De Rosa.

答案:

这个问题在于call()还是apply()。 如果你不知道它们之间的区别,我建设你先读一读 What’s the difference between function.call and function.apply? 下面这行代码我使用了call(),但是这个情况下apply()也会产生同样的结果:

console.log(test.call(obj.prop));

【javascript面试题】5个经典的面试题的更多相关文章

  1. 那晚征服的一道js经典的面试题

    今天朋友共享了一道js中经典的面试题,需求是这样的 给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出 刚拿到这道题的第一感觉便是定义一个count计时器, ...

  2. 解析js中作用域、闭包——从一道经典的面试题开始

    如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎 ...

  3. Spring经典高频面试题,原来是长这个样子

    Spring经典高频面试题,原来是长这个样子 2019年08月23日 15:01:32 博文视点 阅读数 719   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...

  4. C语言面试题大汇总之华为面试题 Eddy整理

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...

  5. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

  6. php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)

    php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...

  7. php开发面试题---1、php常用面试题一(PHP有哪些特性)

    php开发面试题---1.php常用面试题一(PHP有哪些特性) 一.总结 一句话总结: ①.混合语法:php独特混合了C,Java,Prel以及PHP自创的语法. ②.为动态网页而生:可以比CGI或 ...

  8. JavaScript,DOM经典基础面试题

    JavaScript的数据类型 JavaScript的数据类型可以分为原始类型和对象类型 原始类型包括string,number和Boolean三种,其中字符串是使用一对单引号或者一堆双引号括起来的任 ...

  9. 经典Java面试题收集(二)

    经典的Java面试题(第二部分),这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于 ...

随机推荐

  1. HTML <form> 标签的 enctype

    form的enctype有三种 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码. 在使用包含文件 ...

  2. Unity小知识记录

    //判断运行的平台 Application.platform == RuntimePlatform.Android EditorPrefs 编辑器储存数据 [AddComponentMenu(&quo ...

  3. 学习typescript(一)

    环境 必装软件 node,推荐 node 8.0 npm,推荐 npm 5.0 git, 最新版 vscode, 编绎器 必装包 tsc: npm install -g typescript typi ...

  4. leetcode140 Word Break II

    思路: 直接爆搜会超时,需要使用记忆化搜索.使用map把已经计算过的情况记录下来,避免重复计算. 实现: class Solution { public: vector<string> w ...

  5. “Debug Assertion” Runtime Error on VS2008 VS2010 winhand.cpp

    I'm writing a C++ MFC program on VS2008 and I'm getting this "Debug Assertion Error" when ...

  6. Android开发笔记(一百四十三)任务调度JobScheduler

    Android开发笔记(一百四十三)任务调度JobScheduler

  7. Spring MVC异常统一处理(包括普通请求异常以及ajax请求异常)

    通常SpringMVC对异常的配置都是返回某个jsp视图给用户,但是通过ajax方式发起请求,即使发生异常,前台也无法获得任何异常提示信息.因此需要对异常进行统一的处理,对于普通请求以及ajax请求的 ...

  8. 异步 ThreadPool

    线程池是单例,一个进程里只有一个线程池 private void btnThreadPool_Click(object sender, EventArgs e) { Stopwatch watch = ...

  9. Mybatis Learning Notes 1

    Mybatis Learning Notes 主要的参考是博客园竹山一叶的Blog,这里记录的是自己补充的内容 实体类属性名和数据库不一致的处理 如果是实体类的结果和真正的数据库的column的名称不 ...

  10. react中的setState的使用和深入理解

    前端框架从MVC过渡到MVVM.从DOM操作到数据驱动,一直在不断的进步着,提升着, angular中用的是watcher对象,vue是观察者模式,react就是state了,他们各有各的特点,没有好 ...