JS笔记
文章平均质量分 62
trenki
这个作者很懒,什么都没留下…
展开
-
模块化的规范
模块化的规范有CommonJS(2009)、AMD(2010)、CMD(2011)、ES6(2015),这四种规范,那么它们之间的区别是什么?1.CommonJSCommonJS的规范:导入:module.exports = {}、exports.xxx = 'xxx'导出:require(./index.js)查找方式:查找当前目录是否具有文件,没有则查找当前目录的node_modules。再没有,冒泡查询,一直往npm目录查找CommonJS的特点:所有代码在模块作用域内运行,不会污原创 2021-03-16 23:28:04 · 293 阅读 · 0 评论 -
带你三分钟了解闭包
闭包是指内部函数可以访问外部函数的变量。当通过一个外部函数返回一个内部函数时,即使外部函数已经结束执行了,但是内部函数引用的外部函数的变量依然保存在内存中,我们就把这些变量的集合称为闭包。简单来讲,在函数A中还有函数B,函数B调用了函数A中的变量,那么B就是函数A的变量。function test(){ let num = 0 return function (){ num++ console.log(num) }}let f = test原创 2021-03-15 14:49:48 · 644 阅读 · 0 评论 -
JavaScript中箭头函数与传统函数的区别
箭头函数是ES6中新增的特性,下边将介绍它和传统函数的区别。1.没有this、super、arguments和new.target的绑定在箭头函数中,上边的值都有与箭头函数最近的非箭头函数决定。2.不能通过new关键字调用箭头函数没有没有constructorf方法,所以就不能被用作构造函数,如果用new 关键字调用箭头函数,程序会抛出TypeError。let Test = () => 3let b = new Test() //Uncaught TypeError: Test is原创 2021-01-29 23:05:57 · 288 阅读 · 1 评论 -
js事件循环 eventloop
1.什么是事件循环?JavaScript有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。这个模型与其它语言中的模型截然不同,比如 C 和 Java。这是来自MDN的介绍。简单来讲就是js运行处理代码的一套机制。2.微任务Microtasks和宏任务tasks宏任务:一般是指js引擎与宿主环境发生通信产生的回调任务,常见的宏任务有run <script>(同步的代码执行)、setTimeout、setInterval、setImmediate(原创 2020-06-27 22:36:52 · 105 阅读 · 0 评论 -
浅谈js中的防抖(debounce)与节流(throttle)
在实际应用场景中,我们经常遇见高频调用函数,导致浏览器的消耗,但我们可以根据实际需求使用防抖和节流函数。1.防抖释义:在限定时间内,只执行一次函数。如果事件再次触发,则重新计时,计时完毕再执行函数。 //非立即执行版function debounce(func, wait) { let timeout; return function (event) { // console.log(event) let _this = this le原创 2020-05-27 20:25:02 · 206 阅读 · 0 评论 -
js 浏览器截屏的两种方式,html2canvas和MediaDevices.getDisplayMedia()
下边提供两种截屏方式,一种是使用常见的html2canvas插件,另一种方法是利用Web Api的MediaDevices.getDisplayMedia() 方法。1.html2canvas// html<div id="canvas"> <!-- 使用了网络图片 --> <img style="width: 1000px;" src="http://pic2.zhimg.com/50/v2-958d33fd4a4de747058adcafdf75原创 2020-05-11 20:52:16 · 3646 阅读 · 0 评论 -
js 利用canvas转换图片格式并下载图片
1.利用canvas转换格式思路很简单,就是在canvas上drawImage,然后再把canvas转换成想要的图片格式 convertImageToCanvas = (image) => { //image一定是一个图片对象,不然获取不到宽高 var canvas = document.createElement("canvas"); // 新建canvas对象 canvas.wi...原创 2020-05-05 16:01:54 · 1602 阅读 · 0 评论 -
Promise、Promise.all()、Promise.race()的简单使用
简单介绍一下Promise,就是一个可以进行异步操作的代理对象,在实际工作中有很大的具体实践。下边介绍Promise的几种简单用法1.新建一个Promise对象//新建一个promise对象let testPro = new Promise((resolve, reject) => { var num = Math.random() * 10; if (num >...原创 2020-04-18 18:53:25 · 929 阅读 · 0 评论