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面试题解析的更多相关文章

  1. 一个javascript面试题解析

    ; function fn(){ console.log(this.length); } var obj = { length: , method: function (fn) { fn(); // ...

  2. 互联网中级Javascript面试题

    互联网中级Javascript面试题 1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制 ...

  3. 互联网公司前端初级Javascript面试题

    互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...

  4. 【转】典型的JavaScript面试题

    问题1: 作用域(Scope) (function() { "use strict"; var a = b = 5; })(); console.log(b); 控制台(conso ...

  5. 2019年 Java 面试题解析

    2019年 Java 面试题解析 转载地址:https://www.cnblogs.com/Zz-maker/p/11193930.html 作者: Zz_maker 包含的模块: 本文分为十九个模块 ...

  6. 174道 JavaScript 面试题,助你查漏补缺

    最近在整理 JavaScript 的时候发现遇到了很多面试中常见的面试题,本部分主要是作者在 Github 等各大论坛收录的 JavaScript 相关知识和一些相关面试题时所做的笔记,分享这份总结给 ...

  7. [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析

    [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...

  8. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  9. .NET面试题解析(11)-SQL语言基础及数据库基本原理

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 本文内容涉及到基本SQL语法,数据的基本存储原理,数据库一些概念.数据优化等.抱砖引玉,权当一个综合复习! ...

随机推荐

  1. flutter 处理dialog点击事件回调

    flutter 处理dialog点击事件回调 import 'package:flutter/material.dart'; import 'package:scoped_model/scoped_m ...

  2. 递归算法之Fibonacci 斐波那契数列第n个数的求解

    Fibonacci 斐波那契数列第n个数的求解,也可以用递归和非递归的形式实现,具体如下,dart语言实现. int fibonacci(int n) { if (n <= 0) throw S ...

  3. 【Linux开发】如何查看Linux kernel的内置模块驱动列表和进程ID

    [Linux开发]如何查看Linux kernel的内置模块驱动列表和进程ID 标签:[Linux开发] 命令: cat /lib/modules/$(uname -r)/modules.builti ...

  4. Redis的消息订阅及发布及事务机制

    Redis的消息订阅及发布及事务机制 订阅发布 SUBSCRIBE PUBLISH 订阅消息队列及发布消息. # 首先要打开redis-cli shell窗口 一个用于消息发布 一个用于消息订阅 # ...

  5. org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents mor

    今天在用junit测试mybits程序是遇到一个问题,报错为: org.apache.ibatis.exceptions.PersistenceException: ### Error queryin ...

  6. springBoot 静态变量@value取不到值

    在工具类中给静态变量初始化值,使用了springBoot的@Value注解,但是没有赋值成功,得到的是null @Value("${jdbc.url}")private stati ...

  7. 题解 CF292A 【SMSC】

    蒟蒻本想发一篇黑题题解,没想到黑题竟然掉紫了QwQ. 趁着题解还只有几篇,赶紧来发一篇嘿嘿嘿. 这道题其实很简单,题解其实都不需要 AC代码: #include<bits/stdc++.h> ...

  8. RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略

    关于前端路由复用策略网上的文章很多,大多是讲如何实现tab标签切换历史数据,至于如何复用的原理讲的都比较朦胧,代码样例也很难适用各种各样的路由配置,比如懒加载模式下多级嵌套路由出口网上的大部分代码都会 ...

  9. 分布式事务中的2PC和3PC

    分布式事务 分布式事务是指会涉及到操作多个数据库的事务.其实就是将对同一库事务的概念扩大到了对多个库的事务. 分布式事务中需要注意的是分布式系统中存在的一致性问题: CAP原则:在一个分布式系统中,C ...

  10. CSS中的伪类和为伪元素

    伪类: 伪元素: