箭头函数与普通函数的区别
JavaScript中箭头函数与普通函数到底有什么区别?简单来说:普通函数拥有自身的this,而箭头函数自身没有this箭头函数表达式(箭头函数)的语法比函数表达式(普通函数)更简洁,并且箭头函数没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。我们先来看看普通函数和箭头函数的语法//普通函数//第一种:函数声明functioncommonFn(){console.log(this)}//第二种:函数表达式constcommonFn=function(){console.log(this)}commonFn()//调用//箭头函数//第一种:没有参数,填写一个圆括号constarrowsFn=()=>{console.log(this)}//第二种价:有一个参数,可以有圆括号,也可以没有圆括号constarrowsFn=(data)=>{console.log(this)}constarrow...
JavaScript中什么是解构赋值?
什么是解构赋值?解构赋值语法是一种Javascript表达式。通过解构赋值,可以将属性/值从对象/数组中取出,赋值给其他变量,称为解构赋值。参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment语法vara,b,rest;[a,b]=[10,20];console.log(a);//10console.log(b);//20[a,b,...rest]=[10,20,30,40,50];console.log(a);//10console.log(b);//20console.log(rest);//[30,40,50]({a,b}={a:10,b:20});console.log(a);//10console.log(b);//20//Stage4(已完成)提案中的特性({a,b,...rest}={a:10,b:20,c:30,d:40});cons...
Axios如何封装?
废话我们为什么要封装axios呢?如果我写的项目了用到了大量的请求,就会用到请求数据的第三方库,axios、request等大部分情况下都是以模块化开发的形式进行编码,产生了很多个js文件如果我每个js文件了都需要用到axios请求数据,这样axios和我写的代码耦合度太高假设如果某一天,我抛弃了axios,转用了request,那么就会出现一个非常严重的问题我需要打开所有用到axios的js文件,进行修改其中的axios代码(如果有几十,上百个,我这不改的岂不是很费解?而且都是重复性高,没有任何价值的浪费时间)就是因为在项目的设计之初没有做好相关的问题分析导致的悲剧(axios与项目的耦合度过高,我们该如何降低耦合度呢?封装!)正文安装axiosnpminstallaxios--save引入axios(任选其一)constaxios=require("axios");//commonjsimportaxiosfrom"axios";//es6封装axios完整代码(request.js)//引入axiosconstaxios=requir...
JavaScript 中什么是浅拷贝?、什么是深拷贝?
数据类型(可以略过)在步入正文之前,我们得先了解以下,什么是基本数据类型什么是引用数据类型基本数据类型:Number、String、Boolean、Undefined、Null栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间引用数据类型:Object、Array、function、Date、RegExp堆(heap):动态分配的内存,大小不定也不会自动释放,存放引用类型,指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针我对声明变量与赋值的理解:当声明了一个变量时就已经使用了栈内存(此时并没有赋值),那么值是undefined,并且声明变量发生在编译期,而赋值是在执行期1.基本数据类型使用=赋值时,基本数据类型执行的是复制操作解析:声明变量a,并且赋值100(创建一个内存空间),声明变量b,并且赋值a(此时a的数据为100,上面有提到基本数据类型在赋值过程中执行的是复制操作)所有现在把a的100复制出来,给到b那么b(创建一个内存空间)此时两个内存空间没有任何关系,随后...
来聊聊NodeJS的path模块
Node.js的path模块提供了一些用于处理文件路径的小工具先简单的看一下path模块提供的方法方法描述normalize(p:string):string;规范化路径,处理‘.’‘..’join(…paths:string[]):string;连接路径,自动判断当前系统路径分隔符,Unix系统‘/’,Windows系统‘\’resolve(…pathSegments:string[]):string;最后一个参数为{to},其他参数为一个{from}数组。将to参数解析为绝对路径,传入的参数会从右往左处理isAbsolute(p:string):boolean;判断参数path是否是绝对路径。relative(from:string,to:string):string;返回从{from}到{to}的相对路径dirname(p:string):string;返回路径中代表文件夹的部分,类似Unix的dirname命令basename(p:string,ext?:string):string;返回路径中的最后一部分。类似Unix的bashname命令extname(p:strin...