javaScript
棠樾
夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。
展开
-
详解Number()、parseInt()、parseFloat()的区别
Number构造函数包含常量和处理数值的方法。其他类型的值可以使用Number()函数转换为数字当作为一个函数使用时,将字符串或者其他值转换到 Number 类型。如果该值不能被转换,它会返回。原创 2023-11-16 17:08:03 · 524 阅读 · 0 评论 -
LeetCode题解:66. 加一,BigInt,JavaScript
使用BigInt计算,即可解决。BigInt 是一种内置对象,它提供了一种方法来表示大于 253 - 1 的整数。这原本是 Javascript中可以用 Number 表示的最大数字。但测试用例[6,1,4,5,3,9,0,1,9,5,1,8,6,7,0,5,5,4,4]超出了Number的范围。parseInt或者parseFloat转换会丢失精度。将数组转换为数字,加1之后再转换为数组即可。BigInt 可以表示任意大的整数。原创 2023-02-11 17:28:21 · 135 阅读 · 0 评论 -
js 中常见的错误类型
js 中常见的错误类型原创 2022-07-16 18:26:54 · 423 阅读 · 0 评论 -
setInterval 定时器立即执行一次,再定时执行
setInterval 定时器立即执行一次,再定时执行原创 2022-07-13 16:47:57 · 14389 阅读 · 2 评论 -
js Array.from()的5个便捷应用
Array.from()的5个便捷应用 arrayLikeOrIterable:必传参数,类数组对象或者一个iterable mapFunction:可选参数,mapFunction(item,index){ ... }对集合中的每一个项目调用的函数,返回的值被插入到新的集合中。 thisArg:可选参数,执行回调函数ma...原创 2022-06-28 15:25:37 · 775 阅读 · 1 评论 -
Cookie和Session的区别
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。Cookie:在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆原创 2022-03-25 15:56:11 · 523 阅读 · 0 评论 -
前端文件注释和方法注释总结
文件注释:文件头部增加文件注释,用于描述文件的基本信息。便于阅读代码时,快速的理解该文件的功能。 主要包含以下字段:@description 文件描述 @author 作者 @date 创建时间 @lastModifiedBy 最新的变更人 @lastModifiedTime 最新的更新时间 /** * @description 文件干啥用的 * @author Morning * @date 2022-03-25 16:16:52 * @lastModifiedBy Morni原创 2022-03-25 11:00:29 · 1275 阅读 · 0 评论 -
new Date()的参数
ps:转载这篇文章主要的目的是告诉自己:Date()中是可以传递形参的,并且为了尽可兼容所有浏览器形参的格式是有要求的!,至于原作者测试的正确性并没有走出复测,所以待定哦前两天发现手机页面的倒计时在Android上正常显示,在iPhone却不能显示。后来又发现在ff和ie里也不显示。(以前只在chrome里看过,显示正常)。后来同事改了new Date()里字符串的格式,就都正常显示了。我们知道Android和chrome都是webkti内核,难道和这个有关?于是打开控制台,分别测试了不转载 2022-03-11 14:53:01 · 1693 阅读 · 0 评论 -
javascript中的对象为什么会按照键来自动排序
原因:javascript中的对象按照键来自动排序是浏览器造成的,经查V8的相关文档得出以下结论:Chrome浏览器下创建的js对象数组会自动按照键排序、而FireFox不会。例如:解决方法:必须将对象的键值转换为字符,就意味着如果键值必须要是数字型,那么需要在数字前面加上字符(如加_符号或者字母)就会转换为字符变量,这样就不会自动排序如:...原创 2022-01-10 18:22:05 · 2323 阅读 · 4 评论 -
js中截取字符串的三个方法 substring()、substr()、slice()
这三个方法都可以对字符串进行截取,并且返回一个新的字符串,也就是不会对原字符串进行修改。1.substring()substring() 方法用于提取字符串中介于两个指定下标之间的字符。substring() 方法返回的子串包括开始处的字符,但不包括结束处的字符。2.substr()substr() 方法可在字符串中抽取从开始下标开始的指定数目的字符。提示:substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice(...原创 2021-12-16 11:14:05 · 14946 阅读 · 0 评论 -
JS数组reduce()方法详解
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 可以作为一个高阶函数,用于函数的 compose。注意:reduce() 对于空数组是不会执行回调函数的。首先我们看一下参数initialValue:// 当没有设置初始值let arr = [1,3,4,6,7]let sum = arr.reduce((total,current,index)=>{ console.log(index, curr..原创 2021-12-01 12:12:41 · 7352 阅读 · 1 评论 -
数组的扁平化
数组的扁平化就是把多维数组展开成一维数组:let arr = [1,2,[3,2,4],[1,5[7,8,1]],2,3[9,3]]; --->[1,2,3,2,4,1,5,7,8,1,2,3,9,3]方法一:递归循环数组,判断arr[i]是否是数组,是数组就再次调用此函数。<template> <div>数组扁平化</div></template><script>export default { name:原创 2021-11-30 18:16:11 · 590 阅读 · 0 评论 -
for、forEach、map数组遍历性能比较
常用的数组遍历方式有很多,如最经典的for循环 for (var i = 0; i < arr.length; i++) {} 再者有了for…in for (var i in arr) {} forEach arr.forEach(function (i) {}); map arr.map(function (i) {}); 然后ES6有了更为方便的for…of for (let i of arr) {} 此篇不考虑作用差异,仅对这些方式的性能做一次原创 2021-11-25 14:43:28 · 1309 阅读 · 3 评论 -
js 含有文件上传的表单提交入参要求formData形式
项目需求:提交表单同时上传文件模板,同时后台要求入参格式是formData使用 antd <Upload>组件在控制台打印表单内容入参由Json格式转成formData格式:constformData=newFormData(); Object.keys(values).forEach(key=>{ // values是Json格式的入...原创 2021-03-08 11:48:00 · 252 阅读 · 0 评论 -
箭头函数箭头后面使用(), 还是({}), 还是什么括号都不使用
1.使用(),当箭头后面跟的是JSX表达式时,只需要使用()2.使用 ({}),当箭头后面返回的是一个对象时,需要使用({})3.什么括号都不使用,当箭头后面只有一条语句时,可以直接将该语句写在 => 后面总结: 在箭头函数中(xxx) 相当于 { return (xxx)}...原创 2021-03-15 18:00:00 · 692 阅读 · 1 评论 -
js 判断数组的4种方法
1.通过instanceof判断instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值2.通过constructor判断实例的构造函数属性constructor指向构造函数,通过constructor属性可以判断是否为一个数组3.通过Object.prototype.toString.call()判断Object.prototype.toString.call()可以获取到对象的不同类型4.通过Arra...原创 2021-03-18 11:57:00 · 20163 阅读 · 1 评论 -
js一次性删除数组中多个元素
方法一:使用splice + for的逆向循环要想删除数据很全就必须使用逆向循环 ( for 的正向循环 和 forEach都会删除数据不全 )for(let i = this.arr.length - 1; i >= 0; i--) { if(this.arr[i].indexOf(item) === -1) { this.arr.splice(i,1) ...原创 2021-01-13 17:20:00 · 377 阅读 · 0 评论 -
js 动态修改对象的属性名
项目需求:需要给一个对象的所有属性名后面都加一个s,例如:person = { name:'芳华',age:12, sex:'女'}变成person = { names:'芳华',ages:12, sexs:'女'}注意要用[]把动态属性括起来...原创 2021-01-14 17:49:00 · 214 阅读 · 0 评论 -
js 拼接字符串时在中间加上空格
需求:在字符串拼接的时候加上空格效果如图:使用 \xa0,js代码如下:原创 2021-01-14 17:53:00 · 582 阅读 · 0 评论 -
js textarea通过换行或者回车把多行数字放入数组中
需求:input type="textarea"中多行输入的内容,需要放入数组中传给后台方法:输入值.split(/[(\r\n)\r\n]+/)var str = "1a\r\n\r\r2b\n\r3c\r4d\n\r\r\r\r777".split(/[(\r\n)\r\n]+/)console.log(str) // ["1a", "2b", "3c", "4d", "777"]...原创 2021-01-14 18:03:00 · 483 阅读 · 0 评论 -
js 计时器 总结
1.console.time()使用计时器可以对代码运行过程进行测速。你可以给每个计时器取一个名字,每个页面上最多可以运行一万个计时器。当你使用计时器名字调用 console.timeEnd() 函数时,浏览器会返回一个毫秒值,该值表示该计时器启动到你调用 console.timeEnd() 时的时间。控制台会打印出时间2.Date.now()使用 Date.now() 函数来计...原创 2021-01-18 17:35:00 · 593 阅读 · 0 评论 -
前端中的路由
一、路由在现在前端开发中,路由是非常重要的一环,但是路由到底是什么呢?从路由的用途上来说:路由就是指随着浏览器地址栏的变化,展示给用户的页面也不相同。从路由的实现原理上来说:路由就是URL到函数的映射。路由本身也经历了不同的发展阶段: 1.后端路由 2.前端路由后端路由:又可以称为服务器端路由,因为对于服务器来说,当接收到客户端发过来的HTTP请求,就会根据所请求的相应的URL...原创 2020-11-03 12:17:00 · 1185 阅读 · 0 评论 -
对称加密与非对称加密
AES加密方式:步骤:1.在src/utils文件夹中新建crypto.js文件,并在文件中写入下面代码:import CryptoJS from 'crypto-js';export default { // 解密 data:要加密解密的数据,AES_KEY:密钥,IV:偏移量 decrypt(data, AES_KEY, IV) { const key = C...原创 2020-11-19 18:23:00 · 172 阅读 · 0 评论 -
axios中 get 和post 请求参数和headers的配置
post请求:get请求:结合vue项目看一下各种情形:总结一下:get 请求方式中,第一个参数为请求的url地址,第二个参数为请求的一些配置项,需要传递给后端的参数包含在配置项的data或者params属性中。post 请求则第一个参数为url地址,第二个参数是需要入参的json数据,第三个参数是入参以外的其他配置项。补充一下:post|get请求方式,怎么把参数直接加...原创 2020-10-13 17:40:00 · 1046 阅读 · 0 评论 -
数组sort方法的使用
sort()方法是数组自带的一种排序方法,数组在原数组上进行排序,不生成副本。如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。1.当元素为字符串时将元素从字符串从第一位开始比较,第一位相同时比较后一位let arr = ['cb', 'a', 'g',...原创 2020-10-26 15:32:00 · 901 阅读 · 0 评论 -
结合项目需求做竖形页签导航,锚点定位,理解offsetLeft、offsetTop,scrollTop
项目需求是:在页面的右边做一个竖形页签定位导航,随着屏幕滑动到相关的位置,高亮页签,或者点击页签锚点定位到相关位置。思路:计算Basic Information 、Address Information、Business Information、Marketing Information 四个模块盒子相对于可滑动区域的offsetTop,并和可滑动区域的scrollTop进行比较这...原创 2020-09-03 17:58:00 · 119 阅读 · 0 评论 -
bind call apply 的区别和使用
在javascript 中,call 和apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说就是为了改变函数体内部 this 的指向。首先举个例子:一个叫花花的小猫喜欢吃鱼,一个叫黄黄的小狗喜欢吃骨头var cat = { name: '花花', eat:function(param1,param2){ console.log('吃鱼') ...原创 2020-09-28 11:41:00 · 51 阅读 · 0 评论 -
对javascript执行上下文的理解
什么是执行上下文?javascript中代码的运行环境分为一下三种:1.全局级别的代码,这个是默认代码的运行环境,一旦代码被载入,引擎最先进入的就是这个环境。2.函数级别的代码,当执行一个函数时,运行函数体中的代码。3.eval的代码,在eval函数内运行的代码。为了方便于大家理解,我们可以将执行上下文看做当前代码的运行环境或者作用域。举个栗子:在图中一共有4个执行上下文。紫色...原创 2020-09-28 17:43:00 · 134 阅读 · 0 评论 -
localStorage存储数组以及取数组方法
let arr = ['泰迪','柯基','金毛']// 存localStorage.setItem('ARR', JSON.stringify(arr))// 取arr = JSON.parse(localStorage.getItem('ARR'))原创 2020-08-20 15:27:00 · 122 阅读 · 0 评论 -
使用localstorage实现的本地缓存,但是如何根据用户访问不同的缓存数据?
比如说用户A登录,保存了数据,此时用户B在同一浏览器登录,如何保证B访问不到a的缓存?解决方法:自己存数据的时候一起将用户的信息存入(例如用户的ID)一般是用户登录的时候使用localStorage缓存下用户信息userId(例如是用户的ID)当A用户登录后使用localStorage缓存下数据dataInfo时,要把用户的ID同时加入缓存的数据中dataInfo = {list: ...原创 2020-08-20 17:18:00 · 439 阅读 · 0 评论 -
JavaScript 中的事件循环(event loop),以及微任务 和宏任务的概念
说起事件循环(event loop)之前先要知道的几个问题:1.js是单线程的。2.浏览器是多线程的。多个线程相互配合以保持同步,浏览器的线程有:(1).JavaScript引擎线程,用于解析JavaScript代码。(2).GUI渲染线程,它与javaScript线程互斥。(3).事件线程(onclick,onchange...)(4).定时器线程(setTimeout,setIn...原创 2020-07-31 11:00:00 · 167 阅读 · 0 评论 -
数组的所有方法整理
1. push()和pop() -------改变原数组push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。pop():数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。2.shift() 和 unshift()-------改变原数组shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。un...原创 2020-07-31 18:25:00 · 489 阅读 · 0 评论 -
export和export default的区别
相同点1.都可以用于导出常量、函数、文件、模块等2.都可以用import导入不同点1.一个js文件中export可以有多个,export default只能有一个2.使用export 导出时,在导入时要加上{},export default则不需要3.使用export default为模块指定默认输出,导入时只需要知道文件名即可4.使用export必须知道导出的变量或者函数等,导入...原创 2020-06-22 11:27:00 · 462 阅读 · 0 评论 -
URL传参,参数中有+号被转化成空格
我们在url中传递的参数带有加号+,会被浏览器转换成空格,这样导致传参错误解决办法是使用 encodeURIComponent 方法给参数进行转码例如:var name = ”a+b”; window.location.href = "/index?name=" + encodeURIComponent(name);...原创 2020-06-24 10:58:00 · 873 阅读 · 0 评论 -
js 遍历对象/数组的几种方法
一.遍历对象方法一: for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作) 语法:for(var i in obj) i 为对象的key方法二:Object.keys(obj)--------obj对象的key组成的数组Object.values(obj)--------obj对象的value组成的数组方法三:使用Object.getOwn...原创 2020-06-24 16:50:00 · 458 阅读 · 0 评论 -
js中的堆和栈
堆(heap) :堆是堆内存的简称栈(stack):栈是栈内存的简称说到堆栈,我们讲的就是内存的使用和分配了,没有寄存器的事,也没有硬盘的事。各种语言在处理堆栈的原理上都大同小异。1.堆是动态分配内存,内存大小不一,也不会自动释放。2.栈是自动分配相对固定大小的内存空间,并由系统自动释放js的基本类型就5种,Undefined、Null、Boolean、Number、Strin...原创 2020-06-24 18:01:00 · 79 阅读 · 0 评论 -
css APP端 给select下拉列表框添加蒙层
需求:要求页面中的下拉选择框在PC端和M端有两种不同的展示形式实现:首先根据屏幕宽度来判断是否是手机端还是PC端通过 window.screen.width来获取屏幕的宽度。 // 计算屏幕宽度 let screenWidth = window.screen.width; if (screenWidth < 1440) { // 规定小于1440就展示手机端样式 this.isPhone = true; ...原创 2021-08-21 15:45:38 · 558 阅读 · 0 评论 -
js 一维数组转换成二维、三维数组
需求:后台接口返回一个一维数组,前端需要转换成一个二维,或者三维数组进行级联展示举个例子:根据产品类型可以分为:智能手机、耳机、智能家电...其中智能手机中又可以分为: Ace系列,Reno系列,Find系列....二维数组的展示: 就是除去了系列这一分类,把所有的智能手机都放在一起没有系列之分后端返回数据:前端需要的数据结构:request .get('url', { params, }) .th.原创 2021-08-21 12:20:15 · 2063 阅读 · 0 评论 -
async 和await
await后面接一个会return new promise的函数并执行它 await只能放在async函数里使用async和await获取成功的结果function 摇色子(){ return new Promise((resolve, reject)=>{ let sino = parseInt(Math.random() * 6 +1) setTimeout(()=>{ resolve(sino) .原创 2021-07-01 17:17:24 · 113 阅读 · 0 评论 -
js判断空对象的几种方法
let obj = {};1.jinag原创 2021-06-11 12:06:35 · 239 阅读 · 1 评论