Javascript面试题解析
Javascript的一些面试题让很多同学感到头疼,下面就根据兄弟连教育
)毕业学员面试遇到的面试题,给大家做一个简单的分享,希望对初入职场的你们有一些帮助:Javascript面试题解析。
第一题
/*
解析:
+ 优先级大于 ?
此题等价于: 'Value is true' ? 'Something' : 'Nothing'
所以结果是:'Something'
*/
var val = 'smtg';
console.log('Value is ' + (val === 'smtg') ?'Something' : 'Nothing');
第二题
/*
*解析:
* typeof 返回一个表示类型的字符串
typeof的结果请看下面:
**type** **result**
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
Symbol "symbol"
Hostobject Implementation-dependent
Function "function"
Object "object"
instanceof运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上
所以输出["object",false]
*/
functiontwo(){
console.info([typeofnull, null instanceof Object]); //["object", false]
第三题
/*
[JavaScript中的稀疏数组与密集数组][1]
解析:
一般来说,JavaScript中的数组是稀疏的,也就是说,数组中的元素之间可以有空隙
其实在javascript中并没有常规的数组,所有的数组其实就是一个对象。
javascript的数组根本没有索引,因为索引是数字,而js中数组的索引是string,
arr[1]其实就是arr["1"],给arr["1000"] =1,arr.length也会自动变为1001.
这些表现的根本原因就是,JavaScript中的对象就是字符串到任意值的键值对.注意键只能是字符串.
看一下 Array.prototype.filter 的部分代码:
var t =Object(this);
var len =t.length >>> 0;
if (typeoffun !== 'function') {
thrownew TypeError();
}
var res =[];
varthisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i= 0; i < len; i++) {
if (i int) { // 注意这里!!!
varval = t[i];
if(fun.call(thisArg, val, i, t)) {
res.push(val);
}
}
}
从上面可知filter对数组进行遍历时,会首先检查这个索引值是不是数组的一个属性.测试一下:
console.info(0 in ary); //true
console.info(1 in ary); //true
console.info(4 in ary); //false
console.info(10 in ary); // false
也就是说3~9的索引根本没有是初始化
所以答案:[];
*/
var ary = [0,1,2];
ary[10] = 10;
console.info(ary.filter(function(x) { return x ===undefined;}));
第四题
/*
解析:
y 被赋值到全局. x 是局部变量. 所以打印 x 的时候会报 ReferenceError
*/
(function(){
var x = y =1;
})();
console.log(y); // 1
console.log(x); // error
第五题
/*
解析:
当函数参数涉及到 any rest parameters,
anydefault parameters or any destructured parameters 的时候,
这个 arguments 就不在是一个 mapped arguments object 了.....,
所以答案是12,这个需要好好体会一下
*/
function sidEffecting(ary) {
ary[0] =ary[2];
}
function bar(a,b,c=3) {
c = 10
sidEffecting(arguments);
return a + b+ c;
}
bar(1,1,1);
Javascript面试题解析的更多相关文章
- 一个javascript面试题解析
; function fn(){ console.log(this.length); } var obj = { length: , method: function (fn) { fn(); // ...
- 互联网中级Javascript面试题
互联网中级Javascript面试题 1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制 ...
- 互联网公司前端初级Javascript面试题
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
- 【转】典型的JavaScript面试题
问题1: 作用域(Scope) (function() { "use strict"; var a = b = 5; })(); console.log(b); 控制台(conso ...
- 2019年 Java 面试题解析
2019年 Java 面试题解析 转载地址:https://www.cnblogs.com/Zz-maker/p/11193930.html 作者: Zz_maker 包含的模块: 本文分为十九个模块 ...
- 174道 JavaScript 面试题,助你查漏补缺
最近在整理 JavaScript 的时候发现遇到了很多面试中常见的面试题,本部分主要是作者在 Github 等各大论坛收录的 JavaScript 相关知识和一些相关面试题时所做的笔记,分享这份总结给 ...
- [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析
[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- .NET面试题解析(11)-SQL语言基础及数据库基本原理
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! ...
随机推荐
- 别把&和nohup混为一谈, 根本不是同一个东西好不好 ------ 聊聊./a.out & , nohut ./a.out , nohup ./a.out &的区别
在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup, 这就是渊源. 随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...
- Linux iptables 防火墙常用规则
iptables 安装 yum install iptables iptables 规则清除 iptables -F iptables -X iptables -Z 开放指定的端口允许本地回环接口(即 ...
- 测试需要了解的技术之基础篇四__UI自动化测试体系
UI自动化测试体系 1.Andriod 自动化测试:Appium 环境安装与架构介绍.Appium Desktop用例录制.Appium测试用例流程.元素定位方法 IA/AID/XPATH/UISel ...
- 20191127 Spring Boot官方文档学习(6-8)
6.部署Spring Boot应用程序 在部署应用程序时,Spring Boot的灵活打包选项提供了很多选择.您可以将Spring Boot应用程序部署到各种云平台,容器映像(例如Docker)或虚拟 ...
- spring boot 异常汇总
spring boot JPA 异常: org.springframework.data.mapping.PropertyReferenceException: No property role fo ...
- 删除MicrosoftOffice2016的扫尾工作
因为用到一些画流程图之类的工具,想到以前用的Visio挺好用的,就找来安装一下,结果因为装了Microsoft Office2016在安装时报错不断,先说下网上的帖子:用OfficeDeploymen ...
- php配置伪静态如何将.htaccess文件转换 nginx伪静态文件
php通常设置伪静态三种情况,.htaccess文件,nginx伪静态文件,Web.Config文件得形式,如何将三种伪静态应用到项目中呢, 1,.htaccess文件 实例 <IfModule ...
- 解决stanfordnlp一直运行不报错也没有结果
最近学习stanfordnlp,当运行程序时,发现程序一直没有反应,上网查询说是内存不够,但是本地电脑是8g内存.后来重新下载了所需文件,问题解决.
- 使用css3的repeating-linear-gradient画虚线
还在用 border-style: dashed 画虚线吗?虽然也是虚线,但是不能控制每一个虚线的宽度 .dashed { height: 1px; background-image: repeati ...
- React全家桶入门
http://blog.csdn.net/column/details/14545.html