![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
baoleilei6
微信号:bll1286971588 欢迎交友
展开
-
数组中的第K个最大元素leetcode(Top K的问题)
在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4TopK的问题,思路就是用堆来解决。先以前K个元素构建一个大小为K的小顶堆,然后从K个元素之后,遍历从索引在K后面的元素,如果有大于小顶堆的堆顶元素的,那么就交换两个元素并重新构建小顶堆。遍历到最...转载 2021-01-24 21:09:24 · 328 阅读 · 0 评论 -
从n个数选出最大的m个的算法比较
n×m遍扫描 【算法基本描述】n×m遍扫描 【算法思想】每次都扫描一遍数组,取出最大元素,这样扫描m遍就能得到m个最大的数 【算法复杂度】O(nm) 排序后取最大m个数 【算法基本描述】对n个数排序,对拍完序后的序列取m个最大的数 【算法复杂度】视排序的复杂度,一般为O(nlogn)或O(n^2) 计数排序(bitmap) 一次遍历数组记录出现次数O(n),倒过来变量计算m个。 最小堆 【算法基本描述】一遍扫描+最小堆 【算法复杂度】O(nlogm) 遍历O..转载 2021-01-24 20:15:05 · 1131 阅读 · 0 评论 -
归并排序(Merge Sort)
在计算机科学里,归并排序(Merge Sort)是一种通用有效的排序算法。通常情况下实现的是稳定的排序队列,这意味着相等元素排序后的顺序与排序前保持一致。归并排序是采用分治法(Divide and Conquer)的一个非常典型的应用,由John von Neumann发明于1945年。归并排序(Merge Sort)例子利用归并排序,对有7个整数值的数组进行排序。以下图示模拟...原创 2019-08-23 11:18:05 · 285 阅读 · 0 评论 -
Vue 的父组件和子组件生命周期钩子执行顺序是什么
加载渲染过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted 子组件更新过程父beforeUpdate->子beforeUpdate->子updated->父updated 父组件更新过程...转载 2020-03-19 12:48:16 · 767 阅读 · 0 评论 -
介绍下观察者模式和订阅-发布模式的区别,各自适用于什么场景
参考了Java的部分实现,观察者模式代码如下:var subject = { observers: [], notify() { this.observers.forEach(observer =>{ observer.update() }) }, attach (observer) { this.observers.push(observer) }}v...转载 2020-03-18 23:39:59 · 1432 阅读 · 0 评论 -
Async/Await 如何通过同步的方式实现异步
const promisify = require('util').promisify;const path = require('path');const fs = require('fs');const readFile = promisify(fs.readFile);function run(gen) { const g = gen(); function next(d...转载 2020-03-18 08:40:38 · 1842 阅读 · 1 评论 -
Javascript 中通过 yield 和 promise 使异步变同步
背景由于最近一段时间一直在用react-native进行APP的开发,所以接触了不少 javascript。在我们第一次使用react-native + redux + saga开发的过程中,学习、见识到了不少javascript神奇的功能,比如在使用saga的过程中用到了 yield,并且对于其使得异步操作同步化十分好奇,就进行了一番探索。yield简单介绍先看一段简单的代码...转载 2020-03-17 23:27:34 · 1520 阅读 · 0 评论 -
const定义的对象属性是否可以改变
在作业盒子面试的时候问到了一个问题,const定义的对象属性是否可以改变。当时没有考虑就回答了不可以,面试官微笑着回答说错了。回来后查看了一下const的定义,明白了其中的原理。const是用来定义常量的,而且定义的时候必须初始化,且定义后不可以修改。对于基本类型的数据来说,自然很好理解了,例如 const PI = 3.14。如果定义的时候不初始化值的话就会报错,错误内容就是没有初始...转载 2020-03-15 22:11:32 · 995 阅读 · 0 评论 -
forEach this 绑定
某不知来源的面试题一道:"use strict";const a=[1,2,30];const b=[4,5,60];const c=[7,8,90];a.forEach((function (){ console.log(this);}).bind(globalThis),b);// 输出什么?正确答案是:windowwindowwindow这道题的难点在...转载 2020-03-14 15:36:13 · 2650 阅读 · 0 评论 -
适合自己去解释的闭包
闭包的定义其实很简单:函数 A 内部有一个函数 B,函数 B 可以访问到函数 A 中的变量,那么函数 B 就是闭包。闭包的定义其实很简单:函数 A 内部有一个函数 B,函数 B 可以访问到函数 A 中的变量,那么函数 B 就是闭包。function A(){ let a=1; window.B=fu...转载 2020-03-14 11:49:12 · 276 阅读 · 0 评论 -
考点:连等、解析和引用类型
这是某大厂一道知名的面试题,表面简单但是坑很多。var a = {n:1};var b = a;a.x = a ={n:2};console.log(a.x); // undefinedconsole.log(b.x); // {n:2}我们来分析一下这段代码到底是怎么执行的,就会明白为什么结果与我们预想的完全不同,甚至可以说很怪异。var a = {n:1};var...转载 2020-03-14 10:30:51 · 271 阅读 · 0 评论 -
call和apply的性能对比 #6
Function.prototype.apply和Function.prototype.call 的作用是一样的,区别在于传入参数的不同; 第一个参数都是,指定函数体内this的指向; 第二个参数开始不同,apply是传入带下标的集合,数组或者类数组,apply把它传给函数作为参数,call从第二个开始传入的参数是不固定的,都会传给函数作为参数。 call比apply的性能要好,平常可以多用...转载 2020-03-14 09:56:41 · 357 阅读 · 0 评论 -
下面的代码打印什么内容,为什么?
var b = 10;(function b(){ b = 20; console.log(b); })();var b = 10;(function b() { // 内部作用域,会先去查找是有已有变量b的声明,有就直接赋值20,确实有了呀。发现了具名函数 function b(){},拿此b做赋值; // IIFE的函数无法进行赋值(内部机制,类...转载 2020-03-12 23:52:27 · 1834 阅读 · 0 评论 -
instanceof 与 isArray
当检测Array实例时,Array.isArray优于instanceof,因为Array.isArray可以检测出iframes var iframe = document.createElement('iframe');document.body.appendChild(iframe);xArray = window.frames[window.frames.leng...转载 2020-03-12 10:31:13 · 1685 阅读 · 0 评论 -
WeakMap WeakSet
WeakMap WeakSet特性:WeakMap对key的引用和WeakSet的成员 是弱引用 WeakMap对key的引用和WeakSet的成员 只能是对象 无法遍历优点:不易造成内存泄漏弱引用引用了对象,但是不影响它的垃圾回收不会因为该(弱)引用而改变原本的垃圾回收机制,在(弱)引用前应该进垃圾场的,(弱)引用后还是得进垃圾场,不受到(弱)引用的任何影响。v...转载 2020-03-11 23:01:30 · 265 阅读 · 0 评论 -
ES5/ES6 的继承除了写法以外还有什么区别?
转载 2020-03-11 22:59:53 · 1293 阅读 · 0 评论 -
WeakMap WeakSet
WeakMap WeakSet特性:WeakMap对key的引用和WeakSet的成员 是弱引用 WeakMap对key的引用和WeakSet的成员 只能是对象 无法遍历优点:不易造成内存泄漏弱引用引用了对象,但是不影响它的垃圾回收不会因为该(弱)引用而改变原本的垃圾回收机制,在(弱)引用前应该进垃圾场的,(弱)引用后还是得进垃圾场,不受到(弱)引用的任何影响。v...转载 2020-03-11 22:28:43 · 330 阅读 · 0 评论 -
void 0 与 undefined
void 0 与 undefined偶然看到一个问题:为什么有的编程规范要求用 void 0 代替 undefined?如果不知道这个答案的小伙伴,第一反应就要问void 0是什么鬼?void 0void是JavaScript的一个操作符,而void 0会返回undefined,实验出真知,可以在浏览器试验一下console.log(void 0) // undefined...转载 2020-03-07 21:13:26 · 311 阅读 · 0 评论 -
ts中的装饰器
// 装饰器一种特殊的类的声明, 扩展类、属性、方法。function logClass(params:any) { console.log(params); // params代表HttpClict这个类 params.propotype.apiurl = 'fadsf';}// 普通装饰器@logClassclass HttpClict { constru...转载 2020-03-02 09:14:58 · 2591 阅读 · 0 评论 -
如何理解es6中的import是静态编译执行的?(一说是编译期执行的)?
https://www.zhihu.com/question/265631914作者:zeng链接:https://www.zhihu.com/question/265631914/answer/496723117来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。要理解es6中的import是“编译时加载”或者静态加载,需要先理解 JavaScript...转载 2020-02-25 22:44:32 · 1932 阅读 · 0 评论 -
requestAnimationFrame
实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的API,那就是 requestAnimationFrame,顾名思义就是请求动画帧。屏幕刷新频率:屏幕每秒出现图像的次数。普通笔记本...转载 2020-02-25 10:57:30 · 313 阅读 · 0 评论 -
javascript中bind()函数实现和应用以及多次bind的结果的思考
一. 概述在ECMA-262第五版引入了bind()方法,该方法创建一个新函数。二. 语法fn.bind(context[, arg1[, arg2[, ...]]])1第一个参数context将成为返回的新函数的this对象第二个及以后的参数加上返回的新函数的参数,将作为新函数的参数三.bind的简单实现原理 if (!Function.prototyp...转载 2020-02-22 22:31:04 · 829 阅读 · 0 评论 -
ES6 模块与 CommonJS 模块的区别
CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。 所谓值的拷贝,原始类型的值被缓存,不随模块内部的改变而改变。 ES6 模块是动态引用,不缓存值,模块内外是绑定的,而且是只读引用,不能修改值。ES6 的 js 引擎对脚本静态分析的时候,遇到加载命令模块 import ,就会生成一个只读引用,当真正用到模块里边的值的时候,就会去模块内部去取。 Comm...转载 2020-02-21 23:00:25 · 398 阅读 · 0 评论 -
「面试题」如何实现一个圣杯布局?
前言最近,有个朋友向我诉苦说,面试的时候突然被问到了如何实现布局和原理,有点懵。之前JavaScript的部分回答得挺好的,偏偏在这里翻船了,完全没有思路,后面的面试状态一落千丈。结局也如他所料,没有被录取。我给这个朋友做了解答之后,回家整理出此文。希望其他小伙伴面试中,再被问及圣杯布局的时候,可以沉着作答。本文将介绍经典布局——圣杯布局的原理以及两种实现方法:浮动和flex。什么...原创 2020-02-18 14:15:12 · 338 阅读 · 0 评论 -
Proxy 对象学习
1、Proxy 对象到底是什么?Proxy 对象到底是什么呢?Proxy 的意思是 代理,proxy对象的作用是:通过Proxy 创建1个代理对象,然后通过操作代理对象允许你对指定的对象的一些行为进行自定义处理。Proxy(target,handler); Proxy构造函数接收2个对象,第1个参数就是要处理的对象,第2个参数就是要自定义处理的方法的合集(也就是个对象)。很抽象?其实就...转载 2020-02-17 22:28:51 · 503 阅读 · 0 评论 -
防止变量污染全局
1,作用:防止变量污染全局// 现在你和同事开发同一个模块,然后你发现你们变量名大部分相同,为了管理变量,防止污染全局,可以闭包来解决这个问题 // 开发规范:init代表着入口、初始化的意思 let name = 'XYZ'; let init = (function () { let name = 'LM'; function...转载 2020-02-07 10:49:54 · 549 阅读 · 0 评论 -
ES6中Map相对于Object对象有几个区别:
1:Object对象有原型, 也就是说他有默认的key值在对象上面, 除非我们使用Object.create(null)创建一个没有原型的对象; 2:在Object对象中, 只能把String和Symbol作为key值, 但是在Map中,key值可以是任何基本类型(String, Number, Boolean, undefined, NaN....),或者对象(Map, Set, Obj...转载 2020-02-06 10:51:18 · 1355 阅读 · 0 评论 -
JavaScript实现双向链表(代码示例)
本篇文章中,我们将给大家介绍如何在JavaScript中实现双向链表,希望对需要的朋友有所帮助!什么是双向链表?在双向链表中,每个节点都有对前一个节点和下一个节点的引用。上一个和下一个的开始和结束节点应该指向null。双向链表的实现我们使用的是es6类,在下面的代码中,我们创建了一个辅助类Node,其中包含三个属性data,prev,next。 1 2...转载 2020-02-06 09:52:50 · 401 阅读 · 0 评论 -
JavaScript中的global对象,window对象以及document对象的区别和联系
目录常用对象方法 body-主体子对象 常用对象事件 location-位置子对象 常用对象事件一、概念区分:JavaScript中的global对象,window对象以及document对象1、global对象(全局对象)《JS高级程序设计》中谈到,global对象可以说是ECMAScript中对特别的一个对象了,因为不管你从什么角度上看,这个对象都是不存在的。...转载 2020-02-05 15:39:27 · 901 阅读 · 0 评论 -
重学前端-BFC的区域不会与float box重叠。
BFC的区域不会与float box重叠。2.自适应两栏布局https://blog.csdn.net/sinat_36422236/article/details/88763187转载 2020-02-05 15:00:17 · 1068 阅读 · 0 评论 -
JavaScript中Promise.all和Promise.race方法的介绍(附代码)
Promise.all() 方法接受一个包含 Promise 对象或普通值的数组(或其它可迭代对象)作为参数,并返回一个 Promise。当所有 Promise 对象都 resolve 后,将所有 resolve 值以数组形式作为 Promise.all() resolve 的结果。如果其中之一的 Promise 被 reject,立即以第一个 reject 的值作为 Promise.all() ...转载 2020-02-05 12:14:55 · 1676 阅读 · 1 评论 -
轻松理解JS基本包装对象
今天来讨论一下JS中的基本包装对象(也叫基本包装类型),之前刚学到这里的时候,自己也是一头雾水,不明白这个基本包装对象到底是个什么鬼,后来找了很多资料,终于看清了它的真面目。首先呢,我们现在复习一下JS的数据类型,JS数据类型被分为了两大门派,基本类型和引用类型。 基本类型:`Undefined`,`Null`,`Boolean`,`Number`,`String` 引用类型:`Obje...转载 2020-01-27 11:26:00 · 301 阅读 · 1 评论 -
你自认为理解了JavaScript?-6
https://www.cnblogs.com/fengfan/p/3993542.htmlfunction fo(){ console.log(a); }function foo(){ var a = 2; fo();}foo();先执行 foo 函数, fo 虽然在foo调用,但是 fo函数是声明在全局作用域下的,所以fo中引用的a,是指向全局的win...转载 2020-01-23 19:04:06 · 293 阅读 · 0 评论 -
5分钟读懂JavaScript预编译流程
大家都知道JavaScript是解释型语言,既然是解释型语言,就是编译一行,执行一行,那又何来预编译一说呢?脚本执行js引擎都做了什么呢?今天我们就来看看吧。1-JavaScript运行三部曲语法分析 预编译 解释执行语法分析很简单,就是引擎检查你的代码有没有什么低级的语法错误; 解释执行顾名思义便是执行代码了; 预编译简单理解就是在内存中开辟一些空间,存放一些变量与函数 ;2-...转载 2020-01-19 10:58:23 · 278 阅读 · 0 评论 -
从一道前端笔试题分析javascript中this的使用陷阱
相信大家都有看过这样的一道javascript的面试题,具体如下:var length = 10;function fn(){ console.log(this.length);}var obj = { length:5, method:function(fn){ fn(); arguments[0](); }}obj....转载 2020-01-18 22:15:22 · 576 阅读 · 0 评论 -
align-content和align-items的区别
在之前使用弹性布局的时候,align-content与align-items的概念混淆不清,自己特意写了一下来区分.以下是我的初始代码:初始代码效果是这样子的:初始的效果测试一:那么 在.bigbox中添加align-items:center以后,侧轴居中了,效果如下:align-items:center在.bigbox中...转载 2020-01-18 09:59:35 · 673 阅读 · 0 评论 -
函数提升和变量提升,以及他们的优先级
一、变量提升在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。(1) 创建函数有两种形式,一种是函数声明,另外一种是函数字面量,只有函数声明才有变量提升console.log(a) // f a() { console.log(a) }console.log(...转载 2020-01-18 08:37:25 · 459 阅读 · 0 评论 -
flex:1是什么意思
flex-grow : 1; // this means that the div will grow in same proportion as the window-sizeflex-shrink : 1; // this means that the div will shrink in same proportion as the window-size flex-basis : 0...转载 2020-01-16 11:06:18 · 4524 阅读 · 0 评论 -
vue与react组件的思考
前言我最一开始是先学的react,然后也就前段时间开始学习vue,一开始给我的感受是两者很相似,react给我的感觉是灵活,vue是一种死板的感觉。为什么有这种感觉呢,react有一种很强烈的欲望,all in js只要能够用够js写的,就全用js写,所以一切都很灵活,jsx很酷,高阶组件牛逼,es7的装饰器也是可以玩的飞起。反观vue,搞的.vue单文件还是尽量保留原来前端开发的模式,留下了...转载 2020-01-16 10:34:35 · 347 阅读 · 0 评论 -
448. 找到所有数组中消失的数字
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]...原创 2020-01-10 17:52:30 · 191 阅读 · 0 评论