
JavaScript
Jay_帅小伙
这个作者很懒,什么都没留下…
展开
-
node heapdump
node heapdump原创 2023-01-16 14:29:21 · 214 阅读 · 0 评论 -
js导出zip
js导出zip原创 2022-10-18 17:49:41 · 389 阅读 · 0 评论 -
js导出excel
js 导出 excel原创 2022-10-18 17:48:09 · 128 阅读 · 0 评论 -
js判断操作系统
js JavaScript 操作系统原创 2022-10-18 17:38:52 · 632 阅读 · 0 评论 -
前端 监控
前端监控原创 2022-10-17 16:55:56 · 1344 阅读 · 0 评论 -
node koa
node原创 2022-06-09 13:17:24 · 357 阅读 · 0 评论 -
js复制剪切板
cpTxt(url){ let copyInput = document.createElement('input');//创建input元素 copyInput.value=url;//添加属性,将url赋值给input元素的value属性 document.body.appendChild(copyInput);//向页面底部追加输入框 copyInput.select();//选择input元素 document?.execCommand("原创 2022-04-29 09:08:03 · 89 阅读 · 0 评论 -
通过 20 个棘手的ES6面试问题来提高咱们的 JS 技能
ECMAScript 6(以下简称ES6)是 JS 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JS 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。接下来咱们来看看 20 道棘手的面试题,通过做题,顺带提升一下咱们的 JS 的技能。问题1:可以解释一下 ES5 和ES6的区别吗?ECMAScript 5 (ES5):ECMAScript 的第五版,于2009年标准化,该标准已在所有现代浏览器中完全支持。ECMAScript 6 (ES6)/ ECMAScript 20原创 2021-11-01 23:00:14 · 141 阅读 · 0 评论 -
理解css布局和BFC
CSS布局中有一些概念,一旦你理解了它们,就能真正提高你的 CSS 布局能力。本文是关于块格式化上下文(BFC)的。你可能从未听说过这个术语,但是如果你曾经用CSS做过布局,你可能知道它是什么,理解什么是 BFC,怎么工作以及如何创建 BFC 非常有用,这些可以帮助你理解CSS中的布局是如何工作的。在本文中,通过熟悉的示例来解释什么是 BFC。然后说明 display 的一个新值,只有当你理解了什么是 BFC 以及为什么需要它时,它才有意义。什么是 BFC在一个Web页面的CSS渲染中,块级格式化上下原创 2021-10-30 23:54:35 · 139 阅读 · 0 评论 -
力扣【最大子序和】
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所原创 2021-10-28 19:28:21 · 72 阅读 · 0 评论 -
力扣【有效的括号】
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例原创 2021-10-28 18:59:25 · 74 阅读 · 0 评论 -
力扣 【两数之和】
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6原创 2021-10-26 20:52:23 · 106 阅读 · 0 评论 -
力扣题 【下一个更大元素】
给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-greater-element-i著作权归领扣网络所有。商业转载请联系官方授原创 2021-10-26 19:41:27 · 101 阅读 · 0 评论 -
35道必须要清楚地react面试题
问题1:什么是虚拟DOM?虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。问题2:类组件和函数组件之间的区别是啥?类组件可以使用其他特性,如状态 state 和生命周期钩子。当组件只是接收 props 渲染到页面时,就是无状态组件,就属于函数组件,也被称为哑组件或展示组件。函数组件和类组件当然是有区别的,而且函数组件的性能比类组件的性能要高,因为类组件使原创 2021-10-11 17:39:00 · 217 阅读 · 0 评论 -
JavaScript 原型的深入指南
不学会怎么处理对象,你在 JavaScript 道路就就走不了多远。它们几乎是 JavaScript 编程语言每个方面的基础。事实上,学习如何创建对象可能是你刚开始学习的第一件事。对象是键/值对。创建对象的最常用方法是使用花括号{},并使用点表示法向对象添加属性和方法。let animal = {}animal.name = 'Leo'animal.energy = 10animal.eat = function (amount) { console.log(`${this.name} is原创 2021-10-11 15:37:06 · 87 阅读 · 0 评论 -
10个流行的JavaScript面试题
何理解 JS 中的this关键字?JS 初学者总是对 this 关键字感到困惑,因为与其他现代编程语言相比,JS 中的这this关键字有点棘手。“this” 一般是表示当前所在的对象,但是事情并没有像它应该的那样发生。JS中的this关键字由函数的调用者决定,谁调用就this就指向哪个。如果找不到调用者,this将指向windows对象。来几个粟子第一个例子很简单。调用 test对象中的 func(),因此func() 中的’this’指向的是 test 对象,所以打印的 prop 是 test 中原创 2021-10-11 10:25:04 · 100 阅读 · 0 评论 -
这2万字的前端基础知识查漏补缺,请你收藏好
一,JS基础1.如何在es5环境下实现let对于这个问题,我们可以直接查看babel转换前后的结果,看一下在循环中通过let定义的变量是如何解决变量提升的问题源码//源码for(let i=0; i<10; i++){ console.log(i)} console.log(i)babel转码for(var _i = 0; _i < 10; _i++){ console.log(_i)} console.log(i)babel在let定义的变量前加了道下.原创 2021-10-07 15:43:38 · 1469 阅读 · 4 评论 -
web前端基础知识查漏补缺,JavaScript面试题,赶紧收藏
介绍js的基本数据类型js一共六种基本数据类型,分别是 undefined null boolean number string ,还有es6新增的symbol 和 es10新增的bigint。Symbol代表创建后独一无二且不可变的数据类型,他的出现我认为是解决可能出现的全局变量冲突的问题BigInt 是一种数字类型的数据, 它可以表示任意精度格式的整数,使用BigInt可以安全的存储和操作大整数,即使这个数据已经超过了number能够表示的安全范围JavaScript有几种类型的值?你能画一下原创 2021-09-23 18:24:17 · 435 阅读 · 0 评论 -
柱状图刻度
var lb = []var n =-0.5let arr = [0,5,10,15,20,25]for(let i=0;i<26;i++){ lb[i]= arr.indexOf(i) !== -1 ? 3 : '1' n= Number((n+0.1).toFixed(1))}console.log('lb',lb)option = { backgroundColor: new echarts.graphic.RadialGradient(0原创 2021-09-06 11:28:57 · 128 阅读 · 0 评论 -
atob和btoa的base64编码和解码
function utf8_to_b64(str){ return window.btoa(unescape(encodeURIComponent(str)))}function b64_to_utf8(str){ return decodeURIComponent(escape(window.atob(str)))}原创 2021-07-23 09:58:26 · 561 阅读 · 0 评论 -
URLSearchParams或者URL获取queryString的值
const urlSP = new URLSearchParams(location.search)function getQueryString(key){ return urlSP.get(key)}//----------------------------------const urlObj = new URL(location.href)function getQueryString(key){ return urlObj.searchParams.get(key)}原创 2021-07-23 09:52:56 · 519 阅读 · 0 评论 -
测试浏览器的最大调用栈大小的限制
var i= 0function fn(){ i++ fn()}try{fn}catch(ex){ console.log('size=>'+i,'err=>'+ex) }原创 2021-05-27 14:55:38 · 548 阅读 · 0 评论 -
计算一个数的阶乘
迭代function fn(num){ if(num <=0){ return undefuned } let total = 1 for(let n = num; n>1; n--){ total = total * n } return total}fn(4)//--------------------function fn(num){ if(num <=0){ return undefuned } let total = 1 for(let n = 1;原创 2021-05-27 14:33:36 · 104 阅读 · 0 评论 -
js事件循环
console.log('script start')setTimeout(function(){ console.log('setTimeout')},0)Promise.resolve().then(function(){ console.log('promise1')}).then(function(){ console.log('promise2')})console.log('script end')以上代码运行结果script startscript endp原创 2021-05-18 11:03:52 · 100 阅读 · 0 评论 -
抛物线
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Simulation</title> <style> .ball { width:10px; height:10px; backg.原创 2021-03-06 22:47:47 · 164 阅读 · 0 评论 -
牛顿积分
function generate(p1x, p1y, p2x, p2y) { const ZERO_LIMIT = 1e-6; // Calculate the polynomial coefficients, // implicit first and last control points are (0,0) and (1,1). const ax = 3 * p1x - 3 * p2x + 1; const bx = 3 * p2x - 6 * p1x; .原创 2021-03-06 22:46:33 · 326 阅读 · 0 评论 -
koa中间件核心代码
//koa中间件核心代码function compose(middleware){ return function (context, next){ let index = -1 return dispatch(0) function dispatch(i){ if(i <= index )return Promise.reject(new Error('next() called multiple times'))原创 2020-12-17 14:46:48 · 107 阅读 · 0 评论 -
promise异步
promise的apiall方法接受一个promise 对象的数组,当所有点promise都返回的时候才会执行then后面的方法,假如有任何一个promide返会错误,则都将失败而调用catch里面的回调。all方法唱用来处理并行关系。而race的参数和all一样,只不过race只返回最快完成的promise。promise可以直接通过new Promise进行创建,需要传入一个回调回调有两个参数,resovle用来返回成功的值,而返回的值会被then方法里面的回调捕获,reject返回错误,会被cat原创 2020-12-17 13:20:57 · 155 阅读 · 0 评论 -
观察者模式
//观察者模式实现异步function create(fn){ let ret = false return ({ next, complete, error })=>{ function nextFn(...args){ if(ret){ return } next(...args) } function completeFn(..原创 2020-12-17 10:20:20 · 89 阅读 · 0 评论 -
跨域
'Access-Control-Allow-Origin','http://a.zf.cn:5000' // 允许某个域访问'Access-Control-Allow-Credentials','true' // 允许携带cookie'Access-Control-Allow-Headers','a' // 允许携带的header'Access-Control-Max-Age','3600' let xhr = new XMLHttpReque原创 2020-11-27 10:42:55 · 80 阅读 · 0 评论 -
实现二叉搜索树
class Node { constructor(element, parent) { this.element = element; this.parent = parent; this.left = null; this.right = null; }}class BST { constructor() { this.root = null; this.size = 0;原创 2020-11-26 12:54:40 · 88 阅读 · 0 评论 -
javascript实现单向链表
class Node { constructor(element, next) { this.element = element; this.next = next; }}/** * add(index,element) 指定索引添加元素 * add(element) 直接添加元素 * get(index) 获取指定索引元素 * set(index,element) 修改指定索引节点内容 * remove(index) 删除指定索引节点原创 2020-11-25 18:18:37 · 129 阅读 · 0 评论 -
javascript字符串和arrayBuffer转化,responseType:‘arrayBuffer’
字符串–》arrayBufferfunction stringToArrayBuffer(str) { // utf16 不管是字符还是汉字 let buffer = new ArrayBuffer(str.length * 2); let view = new Uint16Array(buffer) for (let i = 0; i < str.length; i++) { view[i] = str.charCodeAt(i) } ret原创 2020-11-25 18:07:06 · 1731 阅读 · 0 评论 -
两种-前端文件预览
file.addEventListener('change', (e) => {let file = e.target.files[0];let fileReader = new FileReader();fileReader.onload = function () { let img = document.createElement('img'); img.src = fileReader.result; document.body.appendChild(img)原创 2020-11-25 17:44:05 · 161 阅读 · 0 评论 -
前端下载html
let str = `<h1>hello world</h1>`;const blob = new Blob([str], { type: 'text/html'});let a = document.createElement('a');a.setAttribute('download', 'a.html');a.href = URL.createObjectURL(blob);document.body.appendChild(a);原创 2020-11-25 17:42:22 · 472 阅读 · 0 评论 -
base64转化
const CHARTS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';function transfer(str){ let buf = Buffer.from(str); let result = ''; for(let b of buf){ result += b.toString(2); } return result.match(/(\d{6})/g).map(val=&g原创 2020-11-25 17:36:24 · 119 阅读 · 0 评论 -
node Buffer
buffer copy for(let i=sourceStart;i<sourceEnd;i++){ targetBuffer[targetStart++]=this[i]; }}concatBuffer.concat = function(bufferList,len=bufferList.reduce((a,b)=>a+b.length,0)){ let buffer = Buffer.alloc(len); let offset = 0;原创 2020-11-25 17:35:31 · 103 阅读 · 0 评论 -
co
这里我们主是掌握思想,异步迭代的思想。(产生一个迭代函数,当做回调函数使用)function co(it){ return new Promise((resolve,reject)=>{ function next(data){ let {value,done} = it.next(data); if(!done){ Promise.resolve(value).then(data=>{原创 2020-11-24 18:15:46 · 127 阅读 · 0 评论 -
promisify原理
我们可以快速的将node的api方法转化成promise,核心原理就是借助了error-first的特性。在内部手动处理错误function promisify(fn){ return function (...args) { return new Promise((resolve,reject)=>{ fn(...args,function (err,data) { if(err) reject();原创 2020-11-24 18:00:16 · 468 阅读 · 0 评论 -
Promise.all原理,Promise.race原理
// 判断是否是promiseconst isPromise = value =>{ if((typeof value === 'object' && value !== null) ||typeof value === 'function'){ return typeof value.then === 'function' } return false;}Promise.all = function (promises) { re原创 2020-11-24 17:53:08 · 670 阅读 · 0 评论