【javascript面试题】5个经典的面试题
问题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”方法
写一个重复打印字符串对象的方法,输入一个整数,这个整数代表重复打印的字数,比如:
- 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个经典的面试题的更多相关文章
- 那晚征服的一道js经典的面试题
今天朋友共享了一道js中经典的面试题,需求是这样的 给定你任意一个字符串,让你写出一个算法,求算出该字符串中出现次数最多的一个字符,并将其结果输出 刚拿到这道题的第一感觉便是定义一个count计时器, ...
- 解析js中作用域、闭包——从一道经典的面试题开始
如何理解js中的作用域,闭包,私有变量,this对象概念呢? 就从一道经典的面试题开始吧! 题目:创建10个<a>标签,点击时候弹出相应的序号 先思考一下,再打开看看 //先思考一下你会怎 ...
- Spring经典高频面试题,原来是长这个样子
Spring经典高频面试题,原来是长这个样子 2019年08月23日 15:01:32 博文视点 阅读数 719 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文 ...
- C语言面试题大汇总之华为面试题 Eddy整理
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...
- java面试题—精选30道Java笔试题解答(二)
摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...
- php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)
php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...
- php开发面试题---1、php常用面试题一(PHP有哪些特性)
php开发面试题---1.php常用面试题一(PHP有哪些特性) 一.总结 一句话总结: ①.混合语法:php独特混合了C,Java,Prel以及PHP自创的语法. ②.为动态网页而生:可以比CGI或 ...
- JavaScript,DOM经典基础面试题
JavaScript的数据类型 JavaScript的数据类型可以分为原始类型和对象类型 原始类型包括string,number和Boolean三种,其中字符串是使用一对单引号或者一堆双引号括起来的任 ...
- 经典Java面试题收集(二)
经典的Java面试题(第二部分),这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于 ...
随机推荐
- HashMap源码及原理
HashMap 简介 底层数据结构分析 JDK1.8之前 JDK1.8之后 HashMap源码分析 构造方法 put方法 get方法 resize方法 HashMap常用方法测试 感谢 changfu ...
- PS基础知识学习
PS学习视频(全) https://ke.qq.com/webcourse/index.html#course_id=28554&term_id=100014572&taid=1349 ...
- [BZOJ2982]combination Lucas定理
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2982 $C(N,M)\% P = C(N\% P,M\% P) * C(N/P,M/P)\ ...
- cf580E. Kefa and Watch(线段树维护字符串hash)
题意 $n$个数的序列,$m + k$种操作 1.$l , r, k$把$l - r$赋值为$k$ 2.$l, r, d$询问$l - r$是否有长度为$d$的循环节 Sol 首先有个神仙结论:若询问 ...
- Sql 行转换为列 以及列转换为行的心得
这是 创建数据库的脚本文件 CREATE TABLE [dbo].[stu]( [学号] [nvarchar](255) NOT NULL, [姓名] [nvarchar](255) NULL, [性 ...
- linux下phpstudy的搭建以及网站的搭建
step1: 下载SSH连接到IP地址(阿里云上购买的) step2: 安装下载phpstudywget -c http://lamp.phpstudy.net/phpstudy.bin chmod ...
- 《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器(上)
构造方法 在Python中创建一个构造方法很容易.只要把init方法的名字从简单的init修改为魔法版本__init__即可: >>> class FooBar: ... d ...
- mysql命令行执行时不输出列名(字段名)
-N 即可 如:mysql -N -e "select * from test" 摘自:http://blog.csdn.net/eroswang/article/details/ ...
- 安装Pywin32后无法正常引用pyd文件
1. 首先在官方下载pywin32 2.下载完成后,无法正常引用pyd文件 3.解决方案: python安装目录\Lib\site-packages\pywin32_system32\* 至 C:\W ...
- 洛谷 P2264 情书
题目背景 一封好的情书需要撰写人全身心的投入.lin_toto同学看上了可爱的卡速米想对她表白,但却不知道自己写的情书是否能感动她,现在他带着情书请你来帮助他. 题目描述 为了帮助lin_toto,我 ...