跳至主要內容

07.ES6常见面试题(ES6)

pinia小于 1 分钟面试题

面试题一:

  const obj = {
    name:'gao',
    sayHi1:()=>{
      console.log(this.name)
    },
    sayHi2(){
      (()=>{
        console.log(this.name)
      })()
    }
  }
  obj.sayHi1() // ''
  obj.sayHi2() // 'gao'

面试题二:

  /**
   * 下面所有数组不接更改
   * 得到一个新数组,键盘价格减20
   * 尽量用一行代码解决
   * @type {[{price: number, name: string},{price: number, name: string},{price: number, name: string},{price: number, name: string}]}
   */
  const products = [
  {name: '鼠标', price: 20},
  {name: '键盘', price: 40},
  {name: '耳机', price: 60},
  {name: '显示屏', price: 80}
];
  const newProducts = products.map(item => item.name=='键盘'?{...item,price:item.price-20}:item)
  console.log(products) // 不改变原数组
  console.log(newProducts) // 得到一个新数组,键盘价格减20

面试题三:剩余参数

function getItems(fruitList,...args){
  return [...fruitList,...args]
}
console.log(getItems(['apple','orange'],'banana','pear','grape'))

面试题四:柯里化函数

  //测试柯里化函数
  function currying(fn, ...args1) {
    return function (...args2) {
      const args = [...args1, ...args2];
      if (args.length < fn.length) {
        return currying(fn, ...args);
      } else {
        return fn(...args);
      }
    }
  }

  const sum = (a, b, c, d) => a + b + c + d;
  const res1 = currying(sum)(1)(2)(3)(4);//10

  const res2 = currying(sum,1)(2)(3)(4);//10
  const res3 = currying(sum,1,2)(3)(4);//10
  console.log(res1, res2, res3);
  // const currying = (fn, ...args) => {
  //   if (args.length >= fn.length) {
  //     return fn(...args);
  //   }
  //   return (...args2) => currying(fn, ...args, ...args2);
  // };
上次编辑于:
贡献者: 林深不见鹿