自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

转载 JS数值计算精度

在JS里面,Number 类型包含整型和浮点型,是使用IEEE754格式来表示的。我们可能都知道在JS里面进行数值运算的时候,得到的结果可能和预期不符,可以看下面的例子:var num1 = 0.1;var num2 = 0.2;alert(num1+num2 === '0.3'); // false // num1+num2=0.30000000000000004那么在JS里面为...

2019-03-11 13:39:19 1911

原创 说一说JS中位运算符

前言JS中有位运算符:与( & )、或( | )、按位取反(~)、异或( ^ )、左移位( << )、右移位( >> )。下面就具体来说说这些位运算符。十进制转二进制首先,需要明白一点,JS进行位运算符时,都是将操作数转换为二进制在进行的,毕竟是按位运算。一般情况下,都是十进制转二进制,遇到其他进制,也可以先转化为十进制,然后在转为二进制。…

2019-03-08 11:13:18 522

转载 JS内存泄漏排查

定义内存泄漏:应用程序不再需要的内存,由于某种原因,内存没有返回到操作系统或可用内存池中。原因1.意外的全局变量JS在处理未声明的变量时,对未声明的变量的引用会在全局对象内创建一个新变量。这些全局变量是无法进行垃圾回收的(除非将它们赋值为 null 或重新进行分配),所以对于存储大量数据的全局变量,确保在使用完之后,对其赋值为 null 或者重新分配。function le...

2019-03-08 09:48:58 1020

原创 说一说JS中的连等赋值

前言在我们编写代码,声明变量的时候,为了方便,可能会出现连等赋值的现象,如:a = b = 2 或者 a = b = {name: "Tom"}这样的语句,但是这样实际会给我们埋下很大的坑,在日后也会出现问题。具体的原因详见下文:赋值原理首先要明白一点,对于连等赋值,在申明变量的时候,无论你是使用let或者const,后者的变量都会变成全局变量,...

2019-03-08 09:47:41 2783

原创 对象新增方法杂谈

前言 最近在重温ES6,看的资料自然是阮一峰的《ECMAScript 6 入门》,看到对象的新增方法一章,特此记录一下。1. Object.is() —— “同值相等”,判断两个值是否严格相等,和“===”有些许细微差别不同之处只有两个:一是+0不等于-0,二是NaN等于自身。+0 === -0 //trueNaN === NaN // falseObject....

2019-03-08 09:47:03 186

转载 状态码301和302的区别

定义301 redirect: 301 代表永久性转移(Permanently Moved)302 redirect: 302 代表暂时性转移(Temporarily Moved )异同点相同:浏览器在拿到服务器返回的 301/302 状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)...

2019-03-08 09:46:34 606

转载 重排(reflow)& 重绘(repaint)

什么是重排和重绘?重排(重构/回流/reflow):当渲染树中的一部分(或全部)因为元素的规模尺寸,布局,隐藏显示等改变而需要重新构建, 这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。重绘(repaint):当盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来之后,浏览器便把这些元素都按照各自的属性绘制一遍,将内容呈现在页面上。重绘是指一个元...

2019-02-28 14:12:11 522

转载 JS模拟实现call,apply,bind

前言 我相信对于call,applay,bind三者之前的用法与区别,小伙伴们肯定都很清楚了,毕竟这也是面试的高频试题,之前面试的时候,当面试官提到call的时候我可是心花怒放,正准备侃侃而谈的时候,面试官说请用js模拟call的用法,限时5分钟。当时就懵了,脑子里只有它的各种用法,但内部究竟如何实现的,还真没有研究过,当时就唱了一首凉凉给自己。失败不可怕,所以今天特写文一篇,纪...

2019-02-17 20:32:37 286

原创 JavaScript 的事件模型

前言

2019-02-15 18:31:38 234

原创 令人困惑的JavaScript

前言今天看了一个网站,有博主将js常见的问题都列举出来。刚开始时我都还是跃跃欲试,心想自己学习js还是有很长一段时间了,应该不会有太大的问题吧!但是现实打脸来的太快,果然自己的水平还是太菜了,对于底层的原理还需要好好了解一下。该篇博文是记录了做题中自己发现的盲点以及易错点。大家也可以实际去做做看,附上网址题目和自己的理解1.题目: ["1", "2", "3"].map(pars...

2019-02-12 14:25:19 236

原创 函数节流(throttle)& 函数防抖(debounce)

前言最近项目是遇到了用户频繁操作的问题,最后使用了函数的节流来防止用户误操作,特此记录一下函数节流和防抖节流(throttle)原理:在一定时间间隔内,只会执行一次方法。相当于把一定时间间隔内的频繁触发的事件,合成一次调用。就像resize这类频繁触发的事件,对于浏览器的性能消耗很大,使用节流函数,以此降低事件触发的频率实现方式有两种:时间戳 和 setTimeout// ...

2019-02-12 14:24:48 268

转载 怪异模式(Quirks Mode)对 HTML 页面的影响

Quirks Mode 概述定义什么是 Quirks Mode? 简单来说,Quirks Mode 就是浏览器为了兼容很早之前针对旧版本浏览器设计、并未严格遵循 W3C 标准的网页而产生的一种页面渲染模式。历史由渲染引擎产生的两种文档模式谈到 Quirks modes 首先就要从浏览器渲染引擎说起。我们知道所有的浏览器都有自己的页面渲染引擎,渲染引擎主要包含两部分,一部分负责 ...

2019-01-14 12:56:26 1039

原创 JS的对象创建以及继承

前言最近在学习js的设计模式,针对对象创建以及继承所使用的模式进行讲解。对象创建工厂模式——不关注过程,只注重最终的创建结果1. 简单工厂模式// 篮球基类var basketBall = function (){ this.info = '篮球类'} basketBall.prototype.getMember = function () { console.l...

2018-07-06 21:28:54 241

原创 New 和 Object.create()的区别

前言 我们在创建对象的时候,通常使用的就是new实例化对象,但现在javascript的标准里面提出了新的方案:Object.create(),详情详细的介绍可以点击查看MDN。下面就简单介绍一下两者的区别。New   new是js中的操作符,可以创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。语法: new constructor ( [aguments] ) ...

2018-07-05 10:15:45 4104

原创 利用CSS实现各种三角形

前言在做前端开发的时候,我们可能会遇到很多需要做三角形的情况,下面就介绍一下使用CSS的transparent属性实现各种各样的三角形。示例:(红色的正倒三角形).box{   height: 0px; //宽和高必须设为0px width: 0px; border-top:10px solid red; border-left:10px solid transp...

2018-06-26 11:41:32 302

转载 前端模块化:CommonJS,CMD,AMD,ES6

前言:模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。一、CommonJS(服务器端)一个文件就是一个模块,每个模块都是单独的作用域,除非定义为global对象的属性 输出模块module.exports对象 ...

2018-06-06 22:35:36 350

转载 V8引擎的垃圾回收机制

前言我们知道,JavaScript之所以能在浏览器环境和NodeJS环境运行,都是因为有V8引擎在幕后保驾护航。从编译、内存分配、运行以及垃圾回收等整个过程,都离不开它。为什么要有垃圾回收在C语言和C++语言中,我们如果想要开辟一块堆内存的话,需要先计算需要内存的大小,然后自己通过malloc函数去手动分配,在用完之后,还要时刻记得用free函数去清理释放,否则这块内存就会被永久占用,...

2018-06-06 22:15:54 420

转载 认识V8引擎

前言JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了极强的生命力。编程语言分为编译型语言和解释型语言两类,编译型语言在执行之前要先进行完全编译,而解释型语言一边编译一边执行,很明显解释型语言的执行速度是慢于编译型语言的,而JavaScript就是一种解释型脚本语言,支持动态类型、弱类型、基于原型的语言,内置支持类型。鉴于Java...

2018-06-06 22:09:46 248

原创 JS对象中的属性

前言在javaScript中,对象的属性分为两种类型:数据属性和访问器属性。一、数据属性1.数据属性:它包含的是一个数据值的位置,在这个位置可以读取和写入数据值。2.数据属性包含四个特性,分别是:configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true  enumerable:表示能否通过f...

2018-06-05 10:29:16 861

原创 函数声明,变量声明,变量赋值的机制

一、函数声明方式:1)变量声明:var foo = function () { ....}2)函数声明:function foo(){ .....}函数参数:都是按值传递(把函数外部的值复制给函数内部的参数)而变量复制则有两种方式——按地址传递还是按值传递,这个就要涉及到变量的基础类型和应用类型的区别,详情见下文函数体中要用到的中间变量尽量...

2018-05-27 22:15:39 6026

原创 闭包(*)

前言今天好好的研究了一下闭包,顺便写一下自己的个人理解。什么是闭包?闭包是指有权访问另一个函数作用域中的变量的函数。闭包有如下特点:函数嵌套函数; 函数外部可以读取内部的参数和变量; 参数和变量不会被垃圾回收机制回收;常见的闭包创建方式:在一个函数内部创建另一个函数,详见下面的例子:function Foo(){ var typeName = 'coffee'; r...

2018-05-27 18:47:39 1221

原创 CSS基础(盒模型,Position,display,水平垂直居中,CSS兼容,伪类,清除浮动)

一、盒模型W3C盒模型IE盒模型两者的区别就在于Width的计算,标准盒子模型的宽度直接就是内容宽度,而IE盒子模型的宽度则是需要算上Padding和border。可以通过box-sizing来切换盒模型,详情如下:1)box-sizing:content-box ——padding和border不被包含在定义的width和height之内,即标准盒子模型2)b...

2018-05-27 18:47:17 648

原创 Deepin下如何配置前端环境

1.安装node步骤:1)官网下载node2)将下载好的包移动到任何你想安装的位置//进入下载目录开启终端,使用如下命令将下载的安装包解压 tar -xvf node-v6.10.0-linux-x64.tar.xz //移动解压后的文件到安装目录 mv node-v6.10.0-linux-x64 /home/app/node 安装完成后,到相应的目录文件下查看是否有node和n...

2018-05-27 18:46:58 975

转载 排序的常用算法

前言:(1)排序的定义:对一序列对象根据某个关键字进行排序;输入:n个数:a1,a2,a3,...,an输出:n个数的排列:a1',a2',a3',...,an',使得a1'<=a2'<=a3'<=...<=an'。再讲的形象点就是排排坐,调座位,高的站在后面,矮的站在前面。(2)对于评述算法优劣术语的说明稳定:如果a原本在b前面,而a=b,排序之后a...

2018-05-27 18:46:36 283

原创 前端基础——正则表达式

正则表达式虽然看上去简单,但是在实际的前端开发时,简单的正则表达式却能够节省很大的代码量。正则表达式的功能主要式捕获、匹配。一、基本知识1.组成部分:元字符,限定符号,转义字符,分组,分支条件,反义字符,后向引用。2.在线测试网站:https://regex101.com/(非常好用,强烈推荐)3.元字符:(纠正错误:\w 匹配包括下划线的任何单词字符,单词指的是“Un...

2018-05-27 18:46:19 1855

原创 JavaScript代码执行机制

前言 一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。JavaScript兼容于ECMA标准,因此也称为ECMAScript。一、代码块  JS中的代码块是指由<script>标签分割的代码段。JS...

2018-05-27 18:45:27 1258

转载 跨域与跨域访问

一、跨域问题跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域。注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。浏览器执行javascript脚本时,会...

2018-05-27 18:45:01 1081

原创 深入理解函数

一、函数的默认值默认值可以解决在参数缺省的时候,防止出错。一般情况下,设置默认值的参数,应该是尾参数,这样比较容易看出,到底省略了那些参数。如果传入参数是undefined,将触发该参数等于默认值,如果是null,则没有这个效果。function foo(x = 1, y = 2) { console.log(x, y);}foo(undefined, null); /...

2018-05-27 18:43:55 206

原创 localStorage , SsessionStorage , Cookie , Session的联系与区别

一、Web本地存储【含义说明】localStorage(长期存储):浏览器关闭后,数据一直存在,不会被清除,即没有时间限制。seesionStorage(临时存储):针对每一个session进行数据存储。只有当浏览器关闭窗口后,数据才会被清除。注意:本地存储都是不能跨域访问的。不同浏览器的存储限制也不一样,chrome一般限制为5M。当存储的Storage超过限制的时候,可以...

2018-05-27 18:42:55 398

原创 React VS Vue

前言  作为前端的主流框架,Vue和React都各有自己的特点与优势,下面就听我来一一道来。Vue的优势包括: 模板和渲染函数的弹性选择 简单的语法及项目创建 更快的渲染速度和更小的体积 React的优势包括: 更适用于大型应用和更好的可测试性 同时适用于Web端和原生App 更大的生态圈带来的更多支持和工具 共同点: 利用...

2018-05-27 18:42:29 1219

转载 React中的Connect实现与原理

一、用法connect([mapStateToProps], [mapDispatchToProps], [mergeProps],[options])作用:连接React组件与 Redux store。参数说明:mapStateToProps(state, ownProps) : stateProps这个函数允许我们将 store 中的数据作为 props 绑定到组件上。const mapSt...

2018-05-27 18:41:48 6283

原创 高阶组件

一、高阶函数        接收函数作为输入,或者输出另一个函数的一类函数,被称作高阶函数。对于高阶组件,它描述的便是接受React组件作为输入,输出一个新的React组件的组件。更通俗地描述为,高阶组件通过包裹(wrapped)被传入的React组件,经过一系列处理,最终返回一个相对增强(enhanced)的React组件,供其他组件调用。二、高阶组件定义:高阶函数就是一个函数,且该...

2018-05-27 18:41:23 701

转载 JSON 和 JSONP 的联系与区别

一、JSONJSON是一种轻量级的数据交换格式优点:1、基于纯文本,跨平台传递极其简单;   2、Javascript原生支持,后台语言几乎全部支持;   3、轻量级数据格式,占用字符数量极少;   4、可读性较强,容易编写和解析;var conference = { "Conference": "Future Marketing", "Date": "2...

2018-05-27 18:41:04 222

原创 对象和数组的遍历方法

 一、对象Object.keys():方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)。// simple arrayvar arr = ['a', 'b', 'c'];console.log(Object.keys(arr...

2018-05-27 18:40:23 1632

原创 React + Node.js + Mysql项目部署到阿里云轻量级应用服务器

一、安装Mysql,可外网访问1. 更新系统 【在root用户下】apt-get update2.安装Mysql-serverapt-get install mysql-serverapt-get isntall mysql-clientapt-get install libmysqlclient-dev注:若是安装出现问题,参考博客:点击打开链接,当然我在安装的时候没有出现任何问题,祝各位也...

2018-05-27 18:40:01 4822

转载 数组的常见操作

1、数组的创建var arrayObj = new Array() 或者 var arrayObj = []; //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]...

2018-05-27 18:39:36 211

转载 HTTP1.0,HTTP1.1,HTTP2.0的区别(*)

 一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javasc...

2018-05-27 18:39:20 208

转载 JS中的数据类型和类型转换

一、数据类型JS中的简单数据类型可以分为五种:Number 、String 、Boolean、Undefined 、Null。Number:数字类型 ,整型浮点型都包括;String:字符串类型,右数字字母字符串以及标点符号组成,必须放在单引号或者双引号中;Boolean:布尔类型,只有true和false两种值;Undefined:未定义,一般指的是已经声明,但是没有赋值的...

2018-05-27 18:38:48 260

转载 HTTP缓存机制

前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前...

2018-05-27 18:33:42 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除