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题目(二)的更多相关文章

  1. 面试常考的js题目(三)

    1.查找两个节点的最近的一个共同父节点,可以包括节点自身 function commonParentNode(oNode1, oNode2) { if(oNode1.contains(oNode2)) ...

  2. 面试常考的js题目(一)

    1.找出dom文档中某个元素下面的所有文字(面试写的一塌糊涂,回来重写的) 1.返回回数组形式的 function getText(ele) { if (ele.nodeType === 3) { r ...

  3. 前端面试常考知识点---CSS

    前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...

  4. PHP面试常考之会话控制

    你好,是我琉忆,欢迎您来到PHP面试专栏.本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和网络 ...

  5. PHP面试常考内容之Memcache和Redis(2)

    你好,是我琉忆.继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读.本周(2019.2-18至2-22) ...

  6. PHP面试常考内容之Memcache和Redis(1)

    你好,是我琉忆.继上周(2019.2-11至2-15)发布的"PHP面试常考内容之面向对象"专题后,发布的第二个专题,感谢你的阅读.本周(2019.2-18至2-22)的文章内容点 ...

  7. PHP面试常考内容之面向对象(3)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),(2 ...

  8. PHP面试常考内容之面向对象(2)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容.继上一篇"PHP面试常考内容之面向对象(1)"发表后,今天更新(2),需要(1)的可以直接点击文字进行跳 ...

  9. PHP面试常考内容之面向对象(1)

    PHP中面向对象常考的知识点有以下几点,我将会从以下几点进行详细介绍说明,帮助你更好的应对PHP面试常考的面向对象相关的知识点和考题. 整个面向对象文章的结构涉及的内容模块有: 一.面向对象与面向过程 ...

随机推荐

  1. PHP遍历目录下的文件夹和文件 以及遍历文件下内容

    1.遍历目录下的文件夹和文件: public function bianli1($dir) { $files = array(); if($head = opendir($dir)) { while( ...

  2. C++ STL——模板

    目录 一 函数模板的特性 二 模板的实现机制 三 类模板 四 类模板如何派生子类 五 普通类的.h和.cpp文件分离 六 类模板在类内类外的实现 七 模板的应用实例 注:原创不易,转载请务必注明原作者 ...

  3. Springboot将mybatis替换为mybatis-plus

    知识点: 1.Mybatis-plus相比mybatis,功能更加强大,简而言之,不需要我们去写mapper.xml配置,但是对于特殊需求的sql语句,还是需要写mapper.xml文件中的sql语句 ...

  4. jQuery显示隐藏div的几种方法

    1.$("#demo").attr("style","display:none;");//隐藏div $("#demo" ...

  5. 小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上

    笔记 3.Feign结合Hystrix断路器开发实战<上>     简介:讲解SpringCloud整合断路器的使用,用户服务异常情况 1.加入依赖          注意:网上新旧版本问 ...

  6. Python AES加密

    使用pycrypto模块https://pypi.python.org/pypi/pycrypto/ >>> from Crypto.Cipher import AES>> ...

  7. IDEA类和方法注释模板设置(非常详细)

    一.首先我们来设置IDEA中类的模板:(IDEA中在创建类时会自动给添加注释) 1.File-->settings-->Editor-->File and Code Template ...

  8. 星际争霸,FF反作弊对战平台

    星际一 [FF]反作弊对战平台让作弊行为无所遁形,只为星际玩家服务的反作弊对战平台目前能检查星际霸主以及其他星际争霸ZUOBI软件支持星际113版本 支持XP WIN7 WIN8 MAC 游戏外挂带来 ...

  9. 安装flanal报错解决

    1.:Error registering network: failed to acquire lease: node "test4" pod cidr not assigned ...

  10. lumen5.4设置cookie

    use Illuminate\Support\Facades\Cookie; use Symfony\Component\HttpFoundation\Cookie as SCookie; //自定义 ...