- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 js作用域
编译过程词法分析、语法分析(生成AST)和代码生成(因为js是编译语言,但不是提前编译的)js的编译发生在代码执行前几微秒甚至更短,在编译阶段,js使用各种方法(JIT)来保证性能的最佳。js编译器过程:对代码进行编译-》准备执行代码-〉执行代码var a = 1的引擎的工作步骤编译起编译,引擎运行。1、编译器遇到var a,询问作用域在相同的作用域下是否有该变量,有则忽略,并使用已有的变量,继续下一步的编译。没有就会通知作用域在当前作用域下,声明一个新变量,并命名为a;2、引擎运行a=1。引
2020-10-27 14:45:13 98
原创 cookie和session的区别
1、定义cookie:是服务端发送给客户端的信息,是很小量的,以key=value的形式存在。session:保存在服务端的用户状态。2、机制原理cookie:客户端请求服务端时,如果需要记录用户状态,服务端会通过response向浏览器颁发一个cookie,浏览器会存储起来,待下一次请求的时候,会连同cookie一个发给服务端。session:客户端请求创建一个session,服务端会...
2019-07-29 17:46:44 104
原创 封装自己的cookie设置和获取的方法
项目中对cookie的操作是比较频繁的,因此我们封装起来一个方法供调用。我们采用ES6封装为一个js,供外界引入调用。let cookie = document.ccokie, encode = encodeURIComponent, decode = decodeURLComponent;export default { // 获取cookie get (k...
2019-07-29 17:14:25 637
原创 js求数组中三个数的最大乘积
思路分析:将数组先排序。如果全是正数,则最后三位数的乘积最大。若有负数,则最小两位数相乘后再和最后一位数相乘,和最后三位数的乘积比较,取较大的。实现方法一数组排序;计算数组最后三项的乘积;计算数组前两项和最后一项的乘积;取计算结果较大者。// An highlighted blockfunction maxThreeSum (array) { var sort_arra...
2019-05-29 16:34:42 968
原创 js面试题关于this指向分析
分析以下问题的打印结果及原因: 1、 let num = 10; function fn() { console.log(this.num); } let obj = { num:5, method: function(fn) { fn(); arguments[0](); } }; obj.method(fn...
2018-03-01 14:20:23 1024 3
原创 JavaScript异步编程的发展
JavaScript的执行环境是单线程的,一次只能做一件事,有多个任务的时候,就必须排队等待。这种模式好处是执行环境简单;坏处是一个耗时长的任务就会导致页面卡在这个地方,产生“假死”现象。 为了解决这个问题,js将执行模式分为同步(Synchronous)和异步(Asynchronous)。 总结js的异步编程大概经历了一下几个阶段:ES6之前的异步编程高阶函数
2018-02-02 11:46:04 201
原创 js函数柯里化
函数柯里化定义柯里化就是将多个参数的一个函数转换为使用部分参数传参的多个函数。感觉有点绕,换句话说,就是函数A需要传递多个参数来使用,经过柯里化处理后成为函数B,只需传递一个或者一部分参数给函数B,它会返回一个函数去处理剩下的参数。举个简单的例子: - 开始的函数Alet fnA=function(x,y){ return x+y}fnA(1,2) //3转化为
2018-02-01 15:44:05 606
转载 HTTP协议详解
原文链接:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细
2017-11-04 18:00:18 168
转载 react-router v4 使用 history 控制路由跳转
问题当我们使用react-router v3的时候,我们想跳转路由,我们一般这样处理我们从react-router导出browserHistory。 我们使用browserHistory.push()等等方法操作路由跳转。 类似下面这样import browserHistory from 'react-router';export function addProduct(props) { r
2017-10-20 15:55:18 13184
原创 null和undefined的区别
null和undefined都表示无,两者既有相似性也有区别。两者比较相似性它们都是基本数据,都具有不可变性,没有方法和属性;不严格比较(null==undefined)的时候返回true;区别undefined代表根本不存在定义,而null被定义了,只是定义为空;typeof null返回object,typeof undefined返回undefined;Object.prototy
2017-09-06 17:03:40 271
原创 JS之闭包总结学习
相关概念梳理变量作用域:全局变量和局部变量 全局变量:全局对象window下声明的变量或者顶层作用域下声明的变量; 局部变量:函数内部声明的变量;静态作用域和动态作用域 静态作用域:函数的作用域在函数定义的时候就决定了(JavaScript 采用的是静态作用域)。 动态作用域:函数的作用域在函数执行的时候才能决定。闭包的定义官方给出的定义太学术化,较为难理解。这里采用多数人可理解的表达
2017-08-25 18:25:43 211
原创 CSS之图片水平垂直居中总结
图片高宽固定1(利用盒子模型进行定位)此方法受限于图片的高宽,必须为已知的。html<div class="box"> <img src="./101.jpg" /></div>css样式.box { border: 1px solid red; width: 200px; height: 200px; position: relative;}.
2017-08-24 17:18:14 230
原创 数组元素为对象的数组去重
当数组的对象为元素,或者我们想区分数字1和字符串‘1’的时候,一般的去重方法就有了一定的局限性。 function remove(data) { let obj = {}; return data.filter(item => { item = JSON.stringify(item); let match = Boolean(obj[item]);
2017-08-22 15:14:13 692
原创 css样式换行整理
css控制div等块级元素的换行一般的文字进行换行的时候,到达定义的宽度之后会自动换行(连续的英文字符和阿拉伯数字不会换行)。这是由于元素用默认属性:white-space:normal。word-break:normal | break-all | keep-all- word-break:normal 按照亚洲和非亚洲语言的文本规则,允许字内换行;- word-break:break-al
2017-08-15 18:27:04 474
转载 把一个数组中的元素插入到另一个数组的指定位置
把一个数组中的元素插入到另一个数组的指定位置 var ary1 = [‘11’, ‘22’, ‘33’ , ‘44’]; var ary2 = [‘12’, ‘23’, ‘34’]; var num= 2; ary2.unshift(num, 0); Array.prototype.splice.apply(ary1, ary2); console.log(ary1);
2017-08-04 17:52:23 12928
原创 数组中包含对象的去重方法
… let ary1 = [{age:1,name:2},{age:1,name:2},{age:2,name:5},{age:2,name:5}]; let ary2 = []; for(let val of ary1){ if(!ary2.some(item=>item.age==val.age)){ ary2.push(val) } }
2017-05-12 16:51:28 1367
转载 JS中的模块规范 seajs和requireJS的异同
浅析JS 中的模块规范 链接地址:http://www.cnblogs.com/skylar/p/4065455.htmlSeaJS与RequireJS最大的区别 链接地址:https://www.douban.com/note/283566440/seaJS和reaquireJS的异同 链接地址:https://github.com/seajs/seajs/iss
2017-04-17 15:52:47 237
转载 React.createClass 对决 extends React.Component
React.createClass和extends React.Component解析
2017-04-14 18:36:33 311
原创 react-router实现单页面应用简析
react-router实现单页面应用简析react-router通过Route标签的嵌套,实现点击切换为不同的路由。每个路由都有自己对应的component组件。那么点击切换路由,只是渲染不同的子组件,实质是利用了{this.props.children}。export default class Index extends Component { render() { ...
2017-04-12 17:17:15 928
原创 当用户输入一个url地址后,到看到页面的过程,期间发生了什么?
1)如果地址是一个IP地址,会直接找该IP对应的网络计算机。如果不是IP地址,则通过DNS(域名系统)将该地址解析成IP地址,再去网络上找对应的计算机。DNS服务器本身也IP,你的网络设置包含DNS服务器的IP。 注:DNS解析完成,查找对应的网络计算机时,可能电脑直接询问的DNS服务器可能没有对应的IP,那当前DNS服务器就会向它的上级服务器询问,上级服务器也可能没有,就依次一层层向上找,最高查
2017-01-07 12:04:55 1759
原创 构造函数和实例:
浏览器http缓存机制浏览器缓存机制包括http协议和非http协议。一、非http协议:在HTML Meta 标签中,告诉浏览器当前页面不进行缓存,每次访问都去服务器拉取。但只有部分浏览器支持,且所有缓存代理服务器都不支持。具体为,在HTML页面的节点中加入标签,代码为:二、http协议:表1 浏览器缓存机制分类强缓存Expires策略
2016-12-16 09:34:57 443
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人