Skip to content

常面常新-0904

JS基础

  • 高阶函数(Higher-Order Functions)和闭包(Closures)

    js
    function func(a, b) {
      console.log(b);
      return function (c) {
        return func(c, a);
      };
    }
    
    let f = func(0); //f = func(0); 输出 undefined(因为 b 是未定义的)
    f = f(1); // 输出 0(第一次调用 func(0) 时的 a 值)
    f(2); // 输出 1(第二次调用 f(1) 时的 a 值)
  • Promise链式、 Promise 被拒绝后直接进入catchcatch 后的then会继续执行。 then 中的回调函数() => console.log(3)被执行,因此打印出 3

    js
    //输出结果 1 3
    new Promise((resolve, reject) => {
      console.log(1);
      reject();
    })
      .then(() => console.log(2))
      .catch(() => {
        // 可以返回一个新的 Promise 也可以返回一个值
        return 1;
      })
      .then(() => console.log(3));
  • JS变量提升与变量遮蔽

  1. 变量提升:var声明的变量会被“提升”到当前作用域的顶部,但赋值不会被提升。
  2. 变量遮蔽:如果一个变量在局部作用域中被声明,它会遮蔽外部作用域中的同名变量
js
console.log(a); //undefined,此时 a 已经被声明,但尚未赋值
var a = "a";
var a = () => {
  console.log(a);
  var a = "a1";
};
a(); //undefined,变量遮蔽,且var在块内被变量提升
console.log(a); //输出箭头函数本身,() => { console.log(a); var a = "a1"; }

CSS

flex:0 flex:1

flex 是一个简写属性,用于设置弹性盒子(flex item)flex-growflex-shrinkflex-basis属性。

  • flex-grow:定义了弹性盒子相对于其他弹性盒子在主轴方向上的增长比例。
  • flex-shrink:定义了弹性盒子相对于其他弹性盒子在主轴方向上的缩小比例。
  • flex-basis:定义了弹性盒子的初始主轴大小。

flex:0

css
flex: 0 0 auto;
/* 表示弹性盒子不会在主轴方向上增长。 */
flex-grow: 0;
/* f表示弹性盒子不会在主轴方向上缩小。 */
flex-shrink: 0;
/* 表示弹性盒子的大小基于其内容或 width/height 值。 */
flex-basis: auto;

flex:1

css
flex: 1 1 0%;
/* 弹性盒子会在主轴方向上扩展,填充可用的剩余空间。 */
flex-grow: 1;
/* 弹性盒子会在主轴方向上缩小以适应容器的空间(如果需要) */
flex-shrink: 1;
/* 弹性盒子的初始大小是 0,在计算增长和缩小时仅依据 flex-grow 和 flex-shrink */
flex-basis: 0%;

编程题

给定整数数组nums和整数k,请返回数组中第k个最大的元素。

请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。

你必须设计并实现时间复杂度为O(n)的算法解决此问题。

如有转载或 CV 的请标注本站原文地址