- 博客(26)
- 收藏
- 关注
原创 leetcode z字型
等差数列第一行和第n行为n2-2的等差数列中间几行奇数列为以i打头的n2-2的等差数列,偶数列为以n2-2-i打头的n2-2的等差数列。当n等于1的时候n*2-2等于0,导致死循环,所以要特判。class Solution {public: string convert(string s, int numRows) { string res; if(numRows==1) return s; for(int i=0;i<numRows.
2021-01-31 19:48:24 132
原创 leetcode 最长回文子串
依次遍历每一个数组元素,以每个数组元素为中心,l–,r++检测是s[l]与s[r]是否相等,一旦出现不相等跳出循环,截取最后左右相等的数组。区分回文长度的奇偶:aabaa和abba两种类型。class Solution {public: string longestPalindrome(string s) { string res; for(int i=0;i<s.size();i++){ int l=i-1,r=i+1; .
2021-01-31 18:50:04 70
原创 leetcode 寻找两个正序数组的中位数
利用递归思想两个数组,分别找到k/2的位置将较小的那一组前k/2砍去,k减去砍去的部分依次递归,直到k==1时结束递归;class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int tot=nums1.size()+nums2.size(); if(tot%2==0){ .
2021-01-31 18:12:03 67
原创 generator
generator是函数生成器在定义时,在function和函数名之间加一个 “ * ”内部使用yield关键字,这个关键字类似return,返回一个结果并让函数暂停。当在粗回到这个函数时,继续执行下面的代码到下一个yield;用next()依次调用function *A(){ console.log('我是小卓'); yield '我去钓鱼'; console.log('我是小敏'); yield '我去煮鱼'; console.log('小卓和小敏');
2021-01-31 14:47:44 138
原创 async_await用法
async作为修饰关键字修饰在函数前,表示该函数是一个异步函数await的使用必须有async关键字await等待的必须是一个promise对象async返回的是一个promise对象asyn function A(){ return '星星';}A().then(result=>{console.log(result);})没有await的执行function A(){ return new Promise((resolve,reject)=>{ .
2021-01-31 14:15:00 397 4
原创 promise
promisepromise的几种状态:pending:初始状态fulfilled:操作成功rejected:操作失败当成功时,会调用resolve并且执行then里的内容;当失败时调用reject并且执行catch里的内容。function A(){ let p = new Promise(function(resolve, reject){ setTimeout(function(){ var nu
2021-01-29 21:57:11 66 2
原创 get和post区别
get请求可以缓存,post请求不可以缓存get传参放在url中,post传参放在请求体中get比Post更不安全,直接暴露在url上,不能用来传递敏感信息get请求传递的参数又长度限制,post没有get请求会被浏览器主动cache,post不会,除非主动设置get只进行url编码,post支持多种方式编码get请求会被完整保留在浏览器记录里,post不会get一次性发送请求头和数据,返回200;Post发送两个请求包,发送一个请求头,收到响应100,发送一个数据,收到响应200;get.
2021-01-29 16:13:30 138 4
原创 事件冒泡和事件捕捉
事件冒泡text->div->body->document->window事件开始时,由最具体的元素接收,然后逐级向上传播到最不具体的节点。事件捕获window->document->body->div->text时间开始时,由最不具体的元素接收,然后逐级向下传播到最具体的节点在事件流中,包括事件捕获、目标阶段、事件冒泡三个阶段捕获阶段,事件从document到html到body后就停止了。下一阶段是处于目标阶段,于是事件在div上发生,并在事件
2021-01-29 14:41:44 163 1
原创 函数柯里化
柯里化函数的目的:把多个参数拆开成多个函数,一个函数只有一个参数,使用闭包返回一个函数。创建一个柯里化函数的通用方式function curry(fn){ var args=Array.prototype.slice.call(arguments,1);//获取外部函数从第二个开始的参数 return function(){ var innerArgs=Array.prototype.slice.call(arguments);//获取内部函数全部参数 var finalArgs=args.
2021-01-29 12:17:17 82 1
原创 浅拷贝和深拷贝
浅拷贝把对象里面的每一个成员,复制一模一样的内容给另一个对象,但是操作对象里的一层可以,再深层次会出问题深拷贝对象成员里不管有多少层,都是相对独立的,用for in遍历,遇到复杂数据类型再进入到这个数据类型进行遍历利用递归思想function deep(o2,o1){ for(var key in o1){ if(o1[key].constructor===array) { o2[key]=[] deep(o2[key],o1[key]) } else if(o1[key].co
2021-01-28 22:12:11 58
原创 变量提升
对变量提升将变量的声明提升至作用域的最上面,但是赋值不提升,也就是只提升声明不赋值。只执行提升后的语句为undefine;对函数提升对于函数声明式进行提升function A(){}对于函数字面量式不进行提升var A=function(){}函数提升优先级高于变量提升...
2021-01-28 18:58:56 71
原创 执行栈和执行上下文
执行上下文执行上下文的生命周期创建:生成变量对象、创建作用域链、确定this指向执行:变量赋值、函数引用、执行其他代码出栈:出站后等待被回收分类全局执行上下文:首先进入全局环境函数执行上下文:当函数执行时,进入函数环境执行上下文栈栈:先进后出先将全局执行上下文压入栈,之后每次进入一个函数就会创建一个执行上下文并压入栈中。当函数执行完毕时,对应的上下文出栈等待回收。(当浏览器关闭时,才会将全局上下文弹出)...
2021-01-28 18:32:10 127 1
原创 防抖和节流
防抖n秒内函数只执行一次,如果在n秒内再次触发则从新计时。function debounce(fn,delay){ let timer=null return ()=>{ if(timer){ clearTimeout(timer) } timer=setTimeout(fn,delay) }}节流高频函数触发时,在n秒内只执行一次。大量触发时,函数只执行一次,并且在delay时间内无效,过了delay后重新生效。function throttle(fn,dela
2021-01-28 17:58:37 69
原创 闭包
闭包是指有权访问另一个函数作用域中的变量的函数。function A(){ var x=10 function B(){ return x; }}1.闭包中携带它的函数的作用域,因此会比其他函数占用过多的空间。当A返回后,其执行环境的作用域链会被销毁,但他的活动对象仍然留在内存中,直到匿名函数被销毁,他的活动对象(变量的值)才会被销毁。闭包会发生内存泄漏。2.闭包里面的环境都是独立互不干扰的。3.能够让外部函数访问内部变量。...
2021-01-28 17:27:34 56
原创 内存泄漏和垃圾回收机制
内存泄漏不用的内存没有及时的释放,就叫内存泄漏垃圾回收机制垃圾回收机制会定期地找出不在使用的内存,将其释放掉常用的垃圾回收机制有:标记清除、引用计数1.清除标记当变量进入环境时,被标记为“进入环境”,进入环境的变量不会被释放内存,当其离开环境时被标记为离开环境。垃圾回收机制在运行的时候会给存储在内存的所有变量加上标记,然后去掉在环境中的变量以及被环境中的变量引用的变量的标记。删掉被标记的变量的值并且回收它们所占用的内存空间。2.计数引用跟踪记录每个值被引用的次数当这个值赋值给一个变量,
2021-01-28 14:53:02 195
原创 display:flex和三列布局
flex 弹性盒子在父元素上设置display:flex弹性改变父元素中的子元素默认情况下:有一条水平的主轴,所有子元素按照主轴方向排列,在主轴方向没有宽度,在侧轴方向宽度填满。主轴方向元素变多时,自动挤压父元素属性flex-direction表示主轴方向:1.row表示主轴水平方向排列,从左到右,侧轴垂直从上到下row-reverse表示主轴水平,从右到左排列2.column表示主轴垂直方向排列,从上到下column-reverse表示主轴垂直方向排列,从下到上justify-cont
2021-01-27 22:19:23 1561
原创 回流和重绘
浏览器使用流式布局Render Tree=DOM(浏览器把HTML解析成DOM)+CSSOM(把css解析成CSSOM)回流当RanderTree中部分或全部元素的尺寸结构或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流,每个页面至少发生一次回流,就是在第一次加载的时候会导致回流的操作1. 页面首次渲染2. 浏览器窗口大小发生改变3. 激活css伪类4.元素尺寸位置发生变化5.添加和删除某些可见的DOM元素6.元素字体大小,内容发生变化重绘页面元素样式发生变化,.
2021-01-27 20:03:45 102
原创 箭头函数
箭头函数是匿名函数匿名函数的写法有:var fn=function(){}var obj={fn:function(){}}setTimeout(function(){},0)setInterval(function(){},0)[].foreach(function(){})div.onclick=function(){}div.addEventListener('click',function(){})箭头函数的写法:()=>{}//()为形参位置//=>为箭头函数
2021-01-27 18:25:41 68
原创 继承
原型继承利用改变原型链的方式达到继承效果直接把父类的实例当作子类的原型对象Student.prototype=new Person('Jack','男')优点:构造函数体内和原型上的都可以继承缺点:1.一个构造函数的参数在两个位置上传递2.继承来的属性不在子类身上借用构造函数继承通过改变父类的构造函数的this实现继承function Person(name,age){ this.name=name this.age=age}Person.prototype.sayhi=func
2021-01-26 19:22:28 115
原创 构造函数写法和prototype
构造函数规则1.调用的时候必须和new连用2. 内部不能写return: 1. return基本数据类型,return无效 2. return复杂数据类型,构造函数无效(内部定义变量和方法无效)3.构造函数首字母大写以区别普通函数prototype每一个函数天生自带一个属性,叫prototype(原型),他是一个对象,在里面写方法是为了给多个对象共享使用的。每一个prototype里带有一个constructer(构造器),表示是哪一个构造函数伴生的原型对象,用来判断数据类型。_pr
2021-01-26 13:17:36 199 1
原创 创建对象的方式
字面量创建对象let obj{ name:'jack', gender:'男', age:18,}内置构造函数创建let obj=new object()obj.name='jack'obj.age=18工厂函数创建对象1.先写一个工厂函数2.利用工厂函数创建对象function createobj(name,age,gender){ let obj={} obj.name=name obj.age=age obj.gender=gender return obj}
2021-01-26 11:47:33 110
原创 let和const
let和const不同与var的是他们是块级作用域有,只在有效范围内有效。比如在函数内用let和Const定义变量,在函数外调用该变量为无效。const(定义只读引用)定义变量后,可以对其内容更改但不可以从新使用该变量名定义常量...
2021-01-25 20:12:21 42
原创 this
this是使用再一个作用域内部的关键字,全局很少用,大部分用于函数内部使用。指向:全局使用:指向window函数使用:不管函数怎么定义,只看函数的调用(箭头函数除外) 1.普通调用(直接调用/全局调用) 函数名():this->window 2.对象调用 xxx.函数名():this->xxx 3.定时器处理函数:this->window setTimeout() setinterval() 4.事件处理
2021-01-25 19:51:46 187 1
原创 正则表达式
正则表达式的创建const 变量名=/正则表达式/正则表达式的两个方法1.匹配:验证字符串是不是符合规则正则.test(要匹配的字符串)符合返回true,反之返回false;2.捕获:从字符串中获取符合规则的那一部分字符串正则.exec(要获取的字符串)没有符合的字符串:返回Null;有符合的字符串:返回一个数组[asd]是捕获出来的片段只捕获第一组符合的片段元字符\s表示一个空格\S表示一个非空格\t表示一个制表符(与空格区别)\d表示一个数字\D表示一个非字符
2021-01-24 14:34:28 121
原创 “==”和“===”的区别
===类型不同,值相同返回false类型相同,值不同返回true==类型不同,值相同,自动转换类型再比较,返回true
2021-01-22 18:32:43 287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人