JavaScript
sunshine215
每天进步一点点~
展开
-
js作用域
编译过程词法分析、语法分析(生成AST)和代码生成(因为js是编译语言,但不是提前编译的)js的编译发生在代码执行前几微秒甚至更短,在编译阶段,js使用各种方法(JIT)来保证性能的最佳。js编译器过程:对代码进行编译-》准备执行代码-〉执行代码var a = 1的引擎的工作步骤编译起编译,引擎运行。1、编译器遇到var a,询问作用域在相同的作用域下是否有该变量,有则忽略,并使用已有的变量,继续下一步的编译。没有就会通知作用域在当前作用域下,声明一个新变量,并命名为a;2、引擎运行a=1。引原创 2020-10-27 14:45:13 · 99 阅读 · 0 评论 -
cookie和session的区别
1、定义cookie:是服务端发送给客户端的信息,是很小量的,以key=value的形式存在。session:保存在服务端的用户状态。2、机制原理cookie:客户端请求服务端时,如果需要记录用户状态,服务端会通过response向浏览器颁发一个cookie,浏览器会存储起来,待下一次请求的时候,会连同cookie一个发给服务端。session:客户端请求创建一个session,服务端会...原创 2019-07-29 17:46:44 · 107 阅读 · 0 评论 -
封装自己的cookie设置和获取的方法
项目中对cookie的操作是比较频繁的,因此我们封装起来一个方法供调用。我们采用ES6封装为一个js,供外界引入调用。let cookie = document.ccokie, encode = encodeURIComponent, decode = decodeURLComponent;export default { // 获取cookie get (k...原创 2019-07-29 17:14:25 · 644 阅读 · 0 评论 -
js求数组中三个数的最大乘积
思路分析:将数组先排序。如果全是正数,则最后三位数的乘积最大。若有负数,则最小两位数相乘后再和最后一位数相乘,和最后三位数的乘积比较,取较大的。实现方法一数组排序;计算数组最后三项的乘积;计算数组前两项和最后一项的乘积;取计算结果较大者。// An highlighted blockfunction maxThreeSum (array) { var sort_arra...原创 2019-05-29 16:34:42 · 989 阅读 · 0 评论 -
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 · 1031 阅读 · 3 评论 -
JavaScript异步编程的发展
JavaScript的执行环境是单线程的,一次只能做一件事,有多个任务的时候,就必须排队等待。这种模式好处是执行环境简单;坏处是一个耗时长的任务就会导致页面卡在这个地方,产生“假死”现象。 为了解决这个问题,js将执行模式分为同步(Synchronous)和异步(Asynchronous)。 总结js的异步编程大概经历了一下几个阶段:ES6之前的异步编程高阶函数原创 2018-02-02 11:46:04 · 201 阅读 · 0 评论 -
js函数柯里化
函数柯里化定义柯里化就是将多个参数的一个函数转换为使用部分参数传参的多个函数。感觉有点绕,换句话说,就是函数A需要传递多个参数来使用,经过柯里化处理后成为函数B,只需传递一个或者一部分参数给函数B,它会返回一个函数去处理剩下的参数。举个简单的例子: - 开始的函数Alet fnA=function(x,y){ return x+y}fnA(1,2) //3转化为原创 2018-02-01 15:44:05 · 606 阅读 · 0 评论 -
null和undefined的区别
null和undefined都表示无,两者既有相似性也有区别。两者比较相似性它们都是基本数据,都具有不可变性,没有方法和属性;不严格比较(null==undefined)的时候返回true;区别undefined代表根本不存在定义,而null被定义了,只是定义为空;typeof null返回object,typeof undefined返回undefined;Object.prototy原创 2017-09-06 17:03:40 · 273 阅读 · 0 评论 -
JS之闭包总结学习
相关概念梳理变量作用域:全局变量和局部变量 全局变量:全局对象window下声明的变量或者顶层作用域下声明的变量; 局部变量:函数内部声明的变量;静态作用域和动态作用域 静态作用域:函数的作用域在函数定义的时候就决定了(JavaScript 采用的是静态作用域)。 动态作用域:函数的作用域在函数执行的时候才能决定。闭包的定义官方给出的定义太学术化,较为难理解。这里采用多数人可理解的表达原创 2017-08-25 18:25:43 · 216 阅读 · 0 评论 -
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 阅读 · 0 评论 -
数组元素为对象的数组去重
当数组的对象为元素,或者我们想区分数字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 · 693 阅读 · 0 评论 -
数组中包含对象的去重方法
… 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 · 1372 阅读 · 0 评论 -
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 · 238 阅读 · 0 评论 -
React.createClass 对决 extends React.Component
React.createClass和extends React.Component解析转载 2017-04-14 18:36:33 · 312 阅读 · 0 评论 -
javaScript中的DOM0级和DOM2级事件
DOM0级事件和DOM2级事件原创 2017-02-04 12:00:31 · 1136 阅读 · 0 评论 -
当用户输入一个url地址后,到看到页面的过程,期间发生了什么?
1)如果地址是一个IP地址,会直接找该IP对应的网络计算机。如果不是IP地址,则通过DNS(域名系统)将该地址解析成IP地址,再去网络上找对应的计算机。DNS服务器本身也IP,你的网络设置包含DNS服务器的IP。 注:DNS解析完成,查找对应的网络计算机时,可能电脑直接询问的DNS服务器可能没有对应的IP,那当前DNS服务器就会向它的上级服务器询问,上级服务器也可能没有,就依次一层层向上找,最高查原创 2017-01-07 12:04:55 · 1766 阅读 · 0 评论 -
构造函数和实例:
浏览器http缓存机制浏览器缓存机制包括http协议和非http协议。一、非http协议:在HTML Meta 标签中,告诉浏览器当前页面不进行缓存,每次访问都去服务器拉取。但只有部分浏览器支持,且所有缓存代理服务器都不支持。具体为,在HTML页面的节点中加入标签,代码为:二、http协议:表1 浏览器缓存机制分类强缓存Expires策略原创 2016-12-16 09:34:57 · 446 阅读 · 0 评论