常面常新-0904
JS基础
高阶函数
(Higher-Order Functions)和闭包(Closures)jsfunction 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被拒绝后直接进入catch,catch后的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变量提升与变量遮蔽
- 变量提升:
var声明的变量会被“提升”到当前作用域的顶部,但赋值不会被提升。 - 变量遮蔽:如果一个变量在局部作用域中被声明,它会遮蔽外部作用域中的同名变量
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-grow、flex-shrink 和 flex-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)的算法解决此问题。
