javascript学习
in_motion
程序员中猿
展开
-
Promise的finally并不是终结
开发时常常遇到一串Promise.then最后执行一个固定逻辑,显而易见要使用finally。日后需求扩展,需要在这段固定逻辑之后添加另外的异步逻辑——又想加一串then回调,这时候直接在finally之后调then是不是觉得心里发虚?但是又不愿意去将原本的调用链改变,多麻烦啊。仔细查看文档发现其实是可以的,Promise设计早就想到了,文档描述如下:Promise.prototype.fin...原创 2020-01-03 14:26:32 · 4344 阅读 · 1 评论 -
javascript单线程,浏览器多线程和任务队列
入门前端时仅仅知道js单线程,了解浏览器的事件循环,常常分不清js引擎在事件 循环中扮演什么样的角色,甚至一度产生错误理解:js引擎的工作就是事件循环的全部。随着认识的拓宽和加深,了解了任务队列机制(macrotask队列和microtask队列)、浏览器事件触发和UI渲染后,明白了事件循环机制如下图所示:事件循环包含两个线程,js主线程(就是我们常说的js单线程引擎)和事件触发线程。...原创 2019-07-06 11:22:00 · 664 阅读 · 0 评论 -
javascript填坑——系统地认知this
完整系统的掌握this,首先得明白严格模式和非严格模式会影响this指向。1.在全局执行环境下,无论是否严格模式,this都指向全局对象,比如平时前端开发<script>标签中:// 在浏览器中, window 对象同时也是全局对象:console.log(this === window); // true2.简单调用(this没有被执行环境定义)且非严格模式下,thi...原创 2019-07-13 11:30:17 · 125 阅读 · 0 评论 -
Google API调用方式总结——前端js调用和后端各种语言调用
实习期间接到需求,期望能在.net框架下的前端调用google drive api,并持有access_token和refresh_token以保持和google api的长时间连接(单独acccess_token只能维持3600秒访问时间)。然而亲测前端使用纯js调用gapi只能获得access_token,无法同时得到refresh_token,最接近成功的方法如下:GoogleAu...原创 2018-08-10 13:04:44 · 5358 阅读 · 0 评论 -
Promise的执行原理——macrotask和microtask
要理解Promise的执行原理,首先要知道EMCAScript的任务队列机制——macro-task(宏任务)和micro-task(微任务)。浏览器先执行一个macrotask,在执行macrotask过程中可能会创建新的macrotask和microtask,然后顺序执行micro-task队列中的全部任务,然后再取出一个macrotask执行……周而复始。整个script代码是一个macro...原创 2018-05-01 11:10:15 · 1551 阅读 · 0 评论 -
js事件监听
关于事件监听,W3C规范中定义了3个事件阶段,依次是捕获阶段、目标阶段、冒泡阶段。起初Netscape制定了JavaScript的一套事件驱动机制(即事件捕获)。随即IE也推出了自己的一套事件驱动机制(即事件冒泡)。最后W3C规范了两种事件机制,分为捕获阶段、目标阶段、冒泡阶段。IE8以前IE一直坚持自己的事件机制(前端人员一直头痛的兼容性问题),IE9以后IE也支持了W3C规范。W3C规范中:e...原创 2018-03-14 11:14:11 · 176 阅读 · 0 评论 -
js相等运算的规则
js中有宽松相等和严格相等符号,分别为'=='和'===',当等号两边类型相同时,'=='规则和'==='一致,而类型不同时,'=='会进行强制类型转换之后在比较,而'==='不会转化,直接返回结果为false,具体规则如下: 严格相等运算符“===”首先计算其操作数的值,然后比较这两个值,比较过程中没有任何类型转换:如果两个值类型不相同,则它们不相等。如果两个值都是null或原创 2017-12-13 11:50:07 · 556 阅读 · 0 评论 -
javascript数组操作方法
concat() 连接两个或更多的数组,并返回结果。 join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 pop() 删除并返回数组的最后一个元素 push() 向数组的末尾添加一个或更多元素,并返回新的长度。 reverse() 颠倒数组中元素的顺序。 shift() 删除并返回数组的第一个元素 slice() 从某个已有的数组返回选定的元素 s原创 2017-10-05 11:30:35 · 332 阅读 · 0 评论 -
js表达式中的类型转换
1.“+”运算符一元:强制转换位数字,和Number()方法功能一样,具体转换方式见第三点——对象到数字的转换二元:先将两边的对象转换为原始数据类型,有字符串就直接拼接,没有字符串就将两边都转换为数字然后算术运算。各个非数字基本类型转换为的数字值为:内容为数字的字符串(0开头也行)——数字内容,内容不为数字的字符串——NaN,true——1,false——0,undefined——NaN,原创 2017-10-07 19:57:06 · 472 阅读 · 0 评论 -
html中引入javascript文件的加载和执行
以前开发前端页面,经常发现html文件中js文件引入的位置改变有时会引起界面bug,某些效果出问题。这其实是浏览器对js文件加载和执行的机制所致。浏览器对于Javascript的运行有两大特性:1)载入后马上执行,2)执行时会阻塞页面后续的内容(包括页面的渲染、其它资源的下载)。于是,如果有多个js文件被引入,那么对于浏览器来说,这些js文件被被串行地载入,并依次执行。原创 2017-08-29 10:57:03 · 3654 阅读 · 2 评论 -
javascript中正则表达式常用实例
正则表达式/*是否带有小数*/function isDecimal(strValue ) { var objRegExp= /^\d+\.\d+$/; return objRegExp.test(strValue); } /*校验是否中文名称组成 */function ischina(str) { var reg=/^[\u4E00-\u9FA5转载 2017-07-31 09:59:56 · 277 阅读 · 0 评论 -
web前端使用jQuery发送ajax请求并接受响应的代码公式
此文记录下最近软件开发中使用jQuery发送ajax请求并接受响应的代码公式:在jQuery.ajax()方法中,还可以加入如下属性: timeout: 1000, cache: false, beforeSend: LoadFunction接受后端ajax响应时,需要用到success和err原创 2017-07-30 09:53:05 · 1157 阅读 · 0 评论 -
使用javascript完成星球介绍
今天学习了javascript与html中map标签相结合的使用:function writeText(txt){document.getElementById("desc").innerHTML=txt}onMouseOver="writeText('直到 20 世纪 60 年代,金星一直被认为是地球的孪生姐妹,因为原创 2017-07-13 21:19:00 · 225 阅读 · 0 评论