zoukankan      html  css  js  c++  java
  • 面试常考的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);}
        }
    }
    
    
  • 相关阅读:
    【Python3之匿名函数及递归】
    【Python3之模块及包的导入】
    :nth-child和:nth-of-type的区别
    JavaScript ES6中export及export default的区别以及import的用法
    vue中npm run dev运行项目不能自动打开浏览器! 以及 webstorm跑vue项目jshint一直提示错误问题的解决方法!
    SEO优化之HTML代码优化最重要的5个标签
    清除浮动小记,兼容Ie6,7
    JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承
    面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
    纯CSS实现垂直居中的几种方法
  • 原文地址:https://www.cnblogs.com/csuwujing/p/9773041.html
Copyright © 2011-2022 走看看