必然前端面试题.docx

上传人:ho****ga 文档编号:4336664 上传时间:2021-08-29 格式:DOCX 页数:6 大小:24.28KB
返回 下载 相关 举报
必然前端面试题.docx_第1页
第1页 / 共6页
必然前端面试题.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《必然前端面试题.docx》由会员分享,可在线阅读,更多相关《必然前端面试题.docx(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1写一个mySetInterVal(fn, a,b), 每次间隔a, a+b, a+2b的时间,然后再写一个myClear, 停止上面的mySetInterValfunction mySetInterVal(fn, a, b) var i = 0;var timer = null;var temp = function() timer = setTimeout() = fn();i = i + 1;temp();, a + i * b);temp();return () = clearTimeout(timer);第二种写法var mySetInterVal = null, myClear =

2、 null;(function() var i = 0;var timer = null;var temp = function(fn, a, b) timer = setTimeout() = fn();i = i + 1;temp(fn,a,b);, a + i * b);mySetInterVal = function(fn, a, b) temp(fn, a, b); ;myClear = () = clearTimeout(timer);)();2 合并二维有序数组成一维有序数组,归并排序的思路var mergeSort = (function() function merge(le

3、ft, right) var result = ;while(left.length & right.length) if(left0 = right0) result.push(left.shift();elseresult.push(right.shift();while(left.length) result.push(left.shift();while(right.length) result.push(right.shift();return result;return function(arr) var len = arr.length;if(len 2) return arr0

4、;var middle = Math.floor(len / 2);var left = arr.slice(0, middle);var right = arr.slice(middle);var mergedLeft = arguments.callee(left);var mergedRight = arguments.callee(right);return merge(mergedLeft, mergedRight);)();3斐波那契数列我的理解是: 这道题想让你写一个函数,函数接受一个整型变量n做为参数,函数返回一个数组或逗号连接的字符串或是什么也不返回直接在函数内部就把数列输出

5、了(到底返回还是不返回, 以及返回什么不重要,看自己的理解, 都对),数组中包含了斐波那契数列的前n位返回一个数组的代码:function fibonacci(n) let result = ;function temp(i) if(i = 0) return 0; else if(i = 1) return 1;else return resulti - 1 + resulti - 2; for(var i = 0; i itemforeignKey = nodekey);if(childNodes.length = 0) return;else node.child = ;childNod

6、es.forEach(item = item = JSON.parse(JSON.stringify(item);updateNode(item);node.child.push(item););arr.forEach(item = if(itemforeignKey = 0) item = JSON.parse(JSON.stringify(item);updateNode(item);result.push(item););return result;18 请写出下面代码的执行结果console.log(1);setTimeout() = console.log(2);process.ne

7、xtTick() = console.log(3);new Promise(resolve = console.log(4);resolve();).then() = console.log(5);new Promise(resolve = console.log(7);resolve();).then() = console.log(8);process.nextTick() = console.log(6);setTimeout() = console.log(9);process.nextTick() = console.log(10);new Promise(resolve = con

8、sole.log(11);resolve();).then() = console.log(12););结果: 1 7 6 8 2 4 3 5 9 11 10 12解释:微任务 micro 宏任务 macro宏微交替、先宏再微、宏一微全宏: setTimeout、setInterval、全局的代码微: promise中then或catch绑定的函数、process.nextTick开启的任务(且直接置顶)注意: 在当前时间片下,执行new Promise或await时,new Promise时提供的“参数函数” 和 await紧跟的代码,都算是当前时间片下的同步代码,不会等到下一时间片,会马上

9、执行!19 写出执行结果function side(arr) arr0 = arr2;function a(a,b,c=3) c = 10;side(arguments);return a + b + c;console.log(a(1,1,1);输出: 12因为函数中的arguments是一个关键字,其类型是类数组,函数调用时实参有几个,auguments中就保存了几个,a,b,c是形参,刚进入函数的时候其实arguments0 = a arguments1 = b arguments2 = c的,但是由于这里a函数调用时传的是3个1,3个都是“值类型”,这也就决定了arguments0 =

10、 a arguments1 = b arguments2=c只是表面上值是相同的,但在内存中是不同的内存空间,在a函数中调用side函数,在side函数中拼命的改arguments中的数据,是在迷惑做题的人,而最后求和看的是a , b, c 三个形参的值,所以最后在算和的时候a和b的值还是传进来时候的1,而c是变成了10的,最后求和是1220 写出执行结果var min = Math.min();max = Math.max();console.log(min max);结果: falseMath.min() 和 Math.max() 主要用于返回函数调用时给定的多个参数中的最小值和最大值。但

11、Math.min()规定如果没给参数返回Infinity; 而Math.max()规定如果没给参数返回-Infinity. (这个规定有点有违常理,但人家就是这样规定的,你们不要问为会什么了,这个题的考点就是考你基本功扎实不扎实),所以最后返回false, 因为显然 -Inifity比Infinity要小!22写出执行结果,并解释原因var foo = function bar() return 12; ;console.log(typeof bar();报错: bar is not defined原因是: 在等号后面写函数属于“函数表达式”,如果函数表达式还有名称则为”命名函数表达式”!上面

12、的var foo = function bar() return 12; 这行代码等号后面的就是一个“命名函数表达式”,命名函数表达式有一个重要的规则:这个命名函数表达式的名字bar只能在这个函数内使用,外面不能使用,所以后面的代码就报错,如果写成这样: var foo = function bar() console.log(typeof bar); return12; 就是对的!26 下面的代码输出什么?for(let i = 0; i console.log(i), 1);输出: 0 1 2因为i是采用let声明的,let属于块级作用域变量,在for循环中,循环多少次就相当于反复进入了大括号的代码体多少次,每次进入大括号的循环体都会全新的创建一个i,所以每次循体执行setTimeout的第一个参数函数都闭包到了自己那次的i值,所以输出了 0 1 2;如果将let改成var 那么, 反复进行循环体不会反复创建i, 相当于多次setTimeout的函数都闭包到了相同的一个i, 且当跳出循环时,i的值是3, 最后输出结果就为3 3 3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com