常面常新-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)
的算法解决此问题。