2024前端笔试题记录

1.rgb转hex

    const rgbToHex = (rgb) => {
        const reg = /[\d,]+/
        const str_arr = reg.exec(rgb)[0].split(',').map(Number)
        const rgbToHex = (...arg) => {
            return '#' + arg.map(v => v.toString(16).length > 1 ? v.toString(16) : `0${v.toString(16)}`).join('')
        }
        let res = rgbToHex(...str_arr)
        return res
    }
    rgbToHex('rgb(255,255,213)');

函数柯里化

    // 题目3 函数柯里化
    function currying(fn) {
        let a_arg, b_arg,c_arg
        function a(arg) {
            a_arg = arg||0
            return b
        }
        function b(arg) {
            b_arg = arg||0
            return c
        }
        function c(arg) {
        	c_arg = arg||0
            return fn(a_arg, b_arg, c_arg )
        }
        return a
    }
    console.log(currying((a, b, c) => a + b + c)(1)(2)(3));

实现数组拼接和排序

不能使用concat和sort

 function address(arr1, arr2) {
            const arr = []
            arr1.push(...arr2)
            for (let i = 0; i < arr1.length; i++) {
                for (let j = 0; j < arr1.length - 1 - i; j++) {
                    let temp = null
                    if (arr1[j] > arr1[j + 1]) {
                        temp = arr1[j + 1]
                        arr1[j + 1] = arr1[j]
                        arr1[j] = temp
                    }
                }
            }
            return arr1

        }
        console.log(address(arr1, arr2))

完美深拷贝

function deepClone(target) {
            const map = new WeakMap()
            function _deepClone(target) {
                if (typeof target !== 'object' || target === null) {
                    return target
                }
                let result = Array.isArray(target) ? [] : {}
                map.set(target, result)
                function obj_arr(target) {
                    for (let key in target) {
                        if (target.hasOwnProperty(key)) {
                            result[key] = _deepClone(target[key])
                        }
                    }
                }
                const typeDeal = {
                    'Object': obj_arr,
                    'RegExp': (reg) => result = new RegExp(reg),
                    'Date': (date) => result = new Date(date),
                    'Array': obj_arr,
                    'function': function () {
                        return target.call(this, arguments)
                    }
                }
                const type = Object.prototype.toString.call(target).slice(8, -1)
                typeDeal[type](target)
                return result
            }
            return _deepClone(target)
        }

代码输出题

		//结果是5,iife创建了函数作用域,b修改的是var b = 6 变量提升的b,console.log引用的是外部的b变量,即最初定义的b值为5的变量。因此,输出结果为5。
		var b = 5;  
		(()=>{  
   			b=4  
    		var b = 6  
		})();  
		console.log(b); // 5
        function test(value){
            switch(value){
                case 'A':
                    console.log('a');
                    break;
                case 'B':
                    console.log('b')
                    break;
                case undefined:  
                    console.log('und')
                    break;
                default:
                    console.log('default')
                break;
            }
        }
        test(new String('A')) // default。通过包装类new出来的就是对象类型了。
        
        function a(b){
            console.log(b)
            function b(){
                console.log(b)
            }
            b()
        }
        a(1) //输出的b全是b函数 同名函数优先级最高!

		 function a(b) {
            console.log(b)//这里输出函数,同名b函数优先级最高
            var b = 2 //这里覆盖了b函数,
            function b() {
                console.log(b) 
            }
            b() // 执行到这里会报错。 由于上面var b = 2 覆盖了b函数,此时b = 2因此无法作为函数执行
        }
        a(1)

const a = [1,2,3,4].push(5)
console.log(a) // 5 上面调用push后得到的就是push的返回值,push返回值为添加元素后数组的长度


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鲤余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值