面试常考的js题目(二)
1、
已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:
- 返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)
- 调用 a 之后,返回一个函数 b, b 的 length 属性值为 1
- 调用 b 之后,返回一个函数 c, c 的 length 属性值为 1
- 调用 c 之后,返回的结果与调用 fn 的返回值一致
- fn 的参数依次为函数 a, b, c 的调用参数
- 例子:输入函数为 var fn = function (a, b, c) {return a + b + c};
function curryIt(fn) {
var args = [];
var len = fn.length;
function inner(str){
len--;
args.push(str);
if(len>=1){
return inner;
}else{
return fn.apply(null,args);
}
}
return inner;
}
function curryIt(fn) {
var args=[];
var len = fn.length;
function inner(){
args.push((arguments[0]||0));
console.log(args)
return inner;
}
inner.valueOf = function(){
return fn.apply(null,args);
}
return inner;
}
2、给定二进制字符串,将其换算成对应的十进制数字
function base10(str) {
return parseInt(str,2); //注意字符串转数组
}
3、将给定数字转换成二进制字符串。如果字符串长度不足 8 位,则在前面补 0 到满8位
function convertToBinary(num) {
return ('00000000'+num.toString(2)).slice(-8)
}
4、求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题
function multiply(a, b) {
var aStr = String(a);
var bStr = String(b);
var pointLength = Math.max((aStr.length-aStr.indexOf('.')-1),
(bStr.length-bStr.indexOf('.')-1));
return((a*Math.pow(10 ,pointLength))*(b*Math.pow(10,pointLength)pointLength))/(Math.pow(10,2*pointLength);
}
5、给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量
function alterObjects(constructor, greeting) {
constructor.prototype.greeting=greeting
}
6、给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false。 (分组引用)
function containsRepeatingLetter(str) {
var pattern= /([a-zA-Z])\1/;
return pattern.test(str);
}
7、给定字符串 str,检查其是否包含 连续3个数字
1、如果包含,返回最新出现的 3 个数字的字符串
2、如果不包含,返回 false
function captureThreeNumbers(str) {
var reg;
if(reg = str.match(/(\d{3})/)){
return reg[0];
}
else{
return false;
}
}
8、给定字符串 str,检查其是否符合美元书写格式
1、以 $ 开始
2、整数部分,从个位起,满 3 个数字用 , 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3
function isUSD(str) {
var reg = /^\$(\d{1,3})(,\d{3})*(\.\d{2})?$/;
return reg.test(str);
}
9、实现一个打点计时器,要求
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
3、第一个数需要立即输出
//使用setTimeout
function count(start, end) {
if(start <= end){
console.log(start++);
//start++;
st = setTimeout(function(){count(start, end)}, 100);
}
return {
cancel: function(){clearTimeout(st);}
}
}
//使用setInterval
function count(start, end) {
if(start <= end){
console.log(start++);
var st = setInterval(function(){
if(start<=end){
console.log(start++)
}else{
clearInterval(st)
}
},100)
}
return {
cancel: function(){clearInterval(st);}
}
}
面试常考的js题目(二)的更多相关文章
- 面试常考的js题目(三)
1.查找两个节点的最近的一个共同父节点,可以包括节点自身 function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)) ...
- 面试常考的js题目(一)
1.找出dom文档中某个元素下面的所有文字(面试写的一塌糊涂,回来重写的) 1.返回回数组形式的 function getText(ele) { if (ele.nodeType === 3) { r ...
- 前端面试常考知识点---CSS
前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...
- PHP面试常考之会话控制
你好,是我琉忆,欢迎您来到PHP面试专栏.本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和网络 ...
- PHP面试常考内容之Memcache和Redis(2)
你好,是我琉忆.继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读.本周(2019.2-18至2-22) ...
- PHP面试常考内容之Memcache和Redis(1)
你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...
- PHP面试常考内容之面向对象(3)
PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),(2 ...
- PHP面试常考内容之面向对象(2)
PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(1)"发表后,今天更新(2),需要(1)的可以直接点击文字进行跳 ...
- PHP面试常考内容之面向对象(1)
PHP中面向对象常考的知识点有以下几点,我将会从以下几点进行详细介绍说明,帮助你更好的应对PHP面试常考的面向对象相关的知识点和考题. 整个面向对象文章的结构涉及的内容模块有: 一.面向对象与面向过程 ...
随机推荐
- 20175329&20175313&20175318 2019-2020 《信息安全系统设计基础》实验一
详见 https://www.cnblogs.com/xiannvyeye/p/11792152.html#%E4%B8%80%E5%AE%9E%E9%AA%8C%E5%86%85%E5%AE%B9
- Linux设备驱动程序 之 字符设备的注册
内核内部使用struct cdev结构来标识字符设备,在内核调用设备的操作之前,必须分配并注册一个或者多个上述结构,为此,我们的代码需要包含<linux/cdev.h>,其中定义了这个结构 ...
- 火车购票问题(16年ccf)
火车购票问题(16年ccf) 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一 ...
- react数据渲染
现在需要在页面上显示一本书的章节,章节内容存放到一个数组里面: const lessons = [ { title: 'Lesson 1: title', description: 'Lesson 1 ...
- 性能测试 | 理解单线程的Redis为何那么快?
前言 Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数 ...
- ios-Realm数据库的使用
[集成 Realm] 本 Demo 使用 OC 创建,所以先进入 Realm 官网 (我记得之前都是有官方中文教程的,但现在最新版没有中文了),到 Objective-C -> Getting ...
- Camera 采集图像的方法
使用 Camera 采集图像, 实现步骤如下: 需要权限: android.permission.CAMERA android.permission.WRITE_EXTERNAL_STORAGE // ...
- Grafana添加Zabbix为数据源(二)
接触过grafana的同学肯定会觉得grafana比zabbix的图像灵活好看很多,下面就让我们一起进行grafana的web界面配置 1.鼠标移动到左上角,点击Plugins,然后选择"c ...
- 启动eclipse导致Tomcat的配置文件重置
转: 启动eclipse导致Tomcat的配置文件重置 导入一个项目,需要在Tomcat的配置文件中配置JNDI数据源,需要修改Tomcat下的server.xml文件.但是当我们修改完后重启Tomc ...
- Linux文档中翻页和搜索关键字
按键 进行工作空格键 向下翻一页[Page Down] 向下翻一页[Page Up] 向上翻一页[Ctrl + U] 向上翻一页[Ctrl + D] 向下翻一页/string 向下搜寻string这个 ...