Javascript
Javascript基础内容
leelxp
前端码农,算法差。。。
展开
-
函数柯理化是什么,手动实现一个柯理化函数
函数柯理化是什么,手动实现一个柯理化函数https://leexiaop.github.io/coding/7/原创 2021-03-26 16:56:30 · 358 阅读 · 0 评论 -
JavaScript基础之async/await函数基础及原理
异步请求,我们第一时间想到的应该是promise,但是对于async/await函数也并不陌生。而且async/await函数在运用上可能会更加的方便简单。 那么我们就来剖析一下async/await函数。但是我想在细说async/await之前,还是要先说说generator函数。generator:generator函数是es6的一种新的数据类型。一个generator看上去像一个函数,但可以返回多次。function* generator () { yield '1111'原创 2020-09-09 13:56:30 · 731 阅读 · 0 评论 -
JavaScript基础之原型链继承和类继承
实现继承的方式有:1、原型链继承function Aminal (name, age) { this.name = name this.age = age}Aminal.prototype.say = function () { console.log('我是' + this.name + ',现在' + this.age + '岁')}let cat = new Animal('cat', 9)cat.say() // 我是cat,现在9岁这就是原原创 2020-08-28 16:39:06 · 304 阅读 · 0 评论 -
JavaScript基础之原型和原型链详解
普通对象和函数对象let obj1 = {}let obj2 = new Object()let obj3 = new fun3()let fun1 = function () {}let fun2 = new Function('str', 'console.log(str)')function fun3 () {}console.log(typeof Object) // functionconsole.log(typeof Function) // functionc原创 2020-08-28 14:30:58 · 173 阅读 · 2 评论 -
JavaScript基础之EventLoop事件循环机制
每每遇到异步问题的时候,总是能让我们抓耳挠腮,无所适从。那么我们就来讲讲异步问题——EventLoop事件循环机制。首先来了解一个概念,进程和线程:进程:进程是 CPU 资源分配的最小单位;线程:线程是 CPU 调度的最小单位。如何理解这句话呢?计算机是多进程执行的,打开自己的电脑的任务管理器,可以看到所有的执行的进程,而每一个执行的进程又是有多个线程组成的。线程是一个进程中代码的不同执行路线。一个进程的内存空间是共享的,每个线程都可用这些共享内存。而每个进程是独立的。所以这里就会出现另一个原创 2020-08-11 18:07:58 · 257 阅读 · 0 评论 -
JavaScript基础之缓存机制:HTML5离线缓存
浏览器的缓存机制,多种多样,离线缓存是其中之一,这也是为了更好的用户体验,性能优化的重要一步。我们来讲讲这个离线缓存。什么是HTML5离线缓存?离线缓存(Application Cache)就是web应用缓存方式的一种,可以使得用户在离线状态下,依然能够很完美的浏览网站。HTML5离线缓存的优势?离线浏览 - 用户可在应用离线时使用它们。 速度 - 已缓存资源加载得更快。 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。HTML5离线缓存应用场景?h5游戏及一些页面原创 2020-08-10 19:00:17 · 1662 阅读 · 0 评论 -
JavaScript基础之缓存机制:浏览器缓存机制
缓存可以说是网站性能优化非常有用的一种方式。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。对于一个数据请求来说,可以分为发起网络请求、后端处理、浏览器响应三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。一、缓存的位置从缓存的位置来说,主要是分为四种,如果这四种都没有命中,才回去发起网络请求原创 2020-08-10 14:24:03 · 3229 阅读 · 0 评论 -
JavaScript基础之缓存机制:HTTP缓存机制
说到前端的缓存机制,无非就是俩中,一种是浏览器缓存机制,一种就是我们今天要说的HTTP缓存机制。那么接下来就说说这HTTP缓存机制。什么是HTTP缓存?HTTP缓存指的是,当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。常见的http缓存只能缓存get请求响应的资源,对于其他类型的响应则无能为力,所以后续说的请求缓存都是指GET请求。http缓存都是从第二次请求开始的。第一次请求资源时,服务器返回原创 2020-08-10 10:53:29 · 1009 阅读 · 0 评论 -
函数式编程:初识函数式编程
我们在经历了面向对象编程、面向过程编程之后,函数式编程又进入了我们的视线。其实,函数式编程并不是一个什么新鲜的东西。它早在上世纪50年代,随着 Lisp 语言的创建,就已经诞生。而近些年,随着react hooks的发布,函数式编程以其优雅,简单的特点再次出现在大众的视线中。函数式编程这种古老的编程范式并没有随着岁月而褪去其光彩,反而愈加生机勃勃。什么是函数式编程?关于函数式编程,维基百科是这样说的:函数式编程是一种编程范畴。他将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编原创 2020-07-21 18:34:47 · 194 阅读 · 0 评论 -
javascript基础之bind、call、apply方法的区别以及如何手动实现
改变this的指向可以用bind,call,apply方法,那这三个方法有什么区别呢?又如何手动实现这三个方法呢?且往下看:1、bind、call、apply的区别是什么?bind被称为是绑定函数,其函数内部的this指向创建它时传入bind的第一个参数,而传入bind的第二个以及后面的参数则作为原来函数的参数调用原函数,另外bind不会立即执行,而是返回了一个新的函数。call和apply都是为了改变函数内部的运行上下文,apply和call的调用返回函数执行结果。调用call或apply方法原创 2020-07-10 18:16:38 · 122 阅读 · 0 评论 -
JavaScript基础之箭头函数与普通function函数的区别
声明函数方式有多种,但是当前比较关心的是ES5和ES6的俩种类型,也就是function类型的函数和箭头函数:// ES5的函数function fun () {}// ES6() => {}函数的定义就是这俩中方式,今天我们不讲别的,只讲讲他们的区别是什么?(1)箭头函数不能作为构造函数,不能使用new关键字(2)this的指向不同ES5函数的this取决于谁调用,那么this就指向谁;ES6箭头函数本身没有this,箭头函数的内部this,指向了其外原创 2020-07-08 16:29:32 · 1165 阅读 · 0 评论 -
JavaScript基础之this到底指向哪里
this的指向问题一直以来都是前端开发者找工作面试的重点,现在就聊聊这个this到底是何方神圣?ECMAScript中这样写到:this关键字执行为当前执行环境的thisBinding.MDN这样写到:绝大多数中,函数的调用决定了this的指向。简单来说,this的指向是由于调用时候决定的,this具有运行期绑定的特性。全局执行上下文:在全局执行上下文中,this的指向为windowconsole.log(this === window) // true在浏览器里面原创 2020-07-04 22:17:26 · 3566 阅读 · 0 评论 -
JavaScript基础之浏览器地址栏输入URL会发生什么
当我们在浏览器的地址栏输入一个地址后,接下来到底会发生什么呢?当你在浏览器中输入一个地址的时候,浏览器会从浏览历史记录,或者书签等地方模糊匹配出你想要的地址,提示补全url,对于Chrome来说,可以做到你想搜索的网页已经呈现出来。这个时候,其实还没有按下回车或者是搜索按钮。那么当一旦按下回车或者是搜索键后会发生什么呢?首先,浏览器会将输入的地址解析成对应的IP因为浏览器一般都会有2-30分钟左右的dns缓存,所以首先回去缓存中去查找对应的IP,如果有,则返回IP; dns中没有查找到IP,那原创 2020-07-04 15:18:42 · 5420 阅读 · 0 评论 -
JavaScript基础之事件冒泡、事件捕获、事件委托(事件代理)、事件绑定
JavaScript基础之事件冒泡、事件捕获、事件委托、事件绑定可以说是JavaScript基础中最为重要的知识点。下面就来介绍一下相关知识。我们知道,在dom模型中,html是多层次的,当一个html元素上产生事件时,该事件会在dom树元素节点之间按照特定的顺序去传播。传播路径的每一个节点,都会收到这个事件,这就是dom事件流。当事件发生后,就会从内向外逐级传播,因为事件流本身没有处理事件的能力,所以,处理事件的函数并不会绑定在该事件源上。例如我们点击了一个按钮,产生了一个click事件,click事原创 2020-07-04 14:13:57 · 4641 阅读 · 2 评论 -
JavaScript基础之函数截流、防抖、柯理化
函数截流,防抖,柯理化,前端的基础,是每个公司必会问到的点。函数截流:指连续触发事件但是在 n 秒中只执行一次函数。即 2n 秒内执行 2 次... 。节流如字面意思,会稀释函数的执行频率。应用场景:例如,按钮被多次点击实现的方式:(1)定时器方式let throttle = (fun, time) => { let timeout return function () { let self = this let args = ar原创 2020-07-01 16:14:36 · 1021 阅读 · 1 评论 -
JavaScript基础之解决跨域方案
在JavaScript基础中,跨域问题一直都是被常常问到的问题,可是对于前端来说,实际解决前端问题却很少,现在来聊聊跨域问题。首先,我们要明白一个问题,什么是跨域?当我们在浏览器的地址栏输入如:https://www.baidu.com的时候,这个地址其实包含三部分,https是协议,www.baidu.com是域名,还有一个端口,那么当去请求与你的协议,域名,端口其中一个不一样的地址资源的时候,就会出现跨域问题,这也是我们常说的通源策略。那么如何解决跨域问题呢?1、JSONP我们在平时写h原创 2020-07-02 15:01:55 · 4396 阅读 · 0 评论 -
JavaScript基础之new操作神来之笔
总听说,程序员不却对象,需要的时候可以自己new一个出来,那么new这三个字母到底干了什么呢?new操作符做了三件事:(1)创建了一个共对象,将this指向了这个空对象(2)执行构造函数,将传入的属性赋值给this(3)为this对象设置原型为function.prototype,设置构造函数的contructor指向其构造函数本身(4)返回this对象那么如何实现一个new操作符呢?且看下面的代码:function _new (fun) { return functi原创 2020-06-29 16:22:15 · 5983 阅读 · 0 评论 -
JavaScript基础之闭包小例子
闭包:就是在一个函数中执行的另外一个函数总能访问到其外部的变量或者参数,即使外部函数执行完毕也可以。闭包特点:(1)访问函数内部的变量成为可能;(2)闭包中的变量,不会被回收,在IE中会出现内存溢出的问题,是IE浏览器的问题;(3)避免变量的全局污染。看几个闭包的例子:for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i) }, 1000)}console.l原创 2020-06-28 14:35:44 · 219 阅读 · 0 评论 -
JavaScript基础之作用域与作用域链
作用域和作用域链是JavaScript中最基础的点,但是也是比较难的点,那么我们就来系统的讲解一下:作用域:作用域就是指程序源代码中定义变量的区域。作用域规定了如何查找变量,也就是当前执行代码对变量的访问权限。JavaScript采用的是词法作用域,也就是静态作用域。也就是函数的作用域在函数定于的时候就决定了。而与静态作用域相对的是动态作用域,只有在函数被调用的时候才决定的。那么如何查找变量呢?这就是所谓的作用域链。作用域链:当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,原创 2020-06-27 11:51:30 · 128 阅读 · 0 评论 -
前端算法:判断字符串回文
在JavaScript的世界里,那些细小的算法无处不在,今天为大家讲解一下字符串回文:回文字符串:即字符串从前往后读和从后往前读字符顺序是一致的。如何判断是回文字符串:(1)利用数组的方法:先将字符串转为数组,将数组反转,将反转后的数组转为字符串let palindRome = (str) => { if (!str || (str && typeof str !== 'string')) { return } return s原创 2020-06-24 23:45:34 · 774 阅读 · 0 评论 -
Javascript基础之执行上下文和执行栈
学习JavaScript,对于JavaScript的执行原理,是必须要了解的,因此为大家讲解一下Javascript的执行上下文和执行栈:1、执行上下文是什么简而言之,执行上下文是评估和执行 JavaScript 代码环境的抽象概念。每当 Javascript 代码在运行的时候,它都是在执行上下文中运行。2、执行上下文的类型(1)全局执行上下文----任何不在函数内部的代码都在全局执行上下文中,全局执行上下文执行俩件事:创建全局的window对象,并设置thie的值是这个全局对象,一个程序中原创 2020-06-19 19:44:58 · 305 阅读 · 0 评论 -
前端算法:数据拷贝
数据拷贝又是Javascript基础中比较重要的内容之一,也是在绝大多说公司面试的必考题之一,下面呢就讲讲关于数据拷贝的一些问题。说到数据拷贝,就势必要先了解一下数据类型有哪些,存储方式是怎么样的?1、Javascript中的数据类型基本类型:String,Boolean, Number,undefined,null, symbol引用类型:Array,Object,Function2、两种数据类型如何存储我们都知道,存储变量是在栈和堆中,所以js的变量都是存在栈和堆中的。栈堆介原创 2020-06-19 11:30:49 · 226 阅读 · 0 评论 -
前端算法:数组去重
作为一个有经验的前端开发工程师,别总是吹自己在技术栈方面有多么多么深的理解,技术栈运用再怎么炉火纯青,其底层也都是一行一行的javascript代码,所以,基础才是重中之重,以下是基础之数组去重:1、最简单之去重Array.from() + new Set()let unduplicate = (arr) => { return Array.from(new Set(arr))}解释:Array.form 是将数组或者类数组(必须有length)转化为真整的数组...原创 2020-06-12 11:08:37 · 781 阅读 · 0 评论