
js问题锦囊
文章平均质量分 80
muzidigbig
凡事第一反应,找方法,而不是找借口;发现问题,反思,而不是急着辩解。
展开
-
JS - Array Api
push() 和 pop() shift() 和unshift() reverse()sort()splice()fill()join()toString()slice()indexOf()findIndex()find()includes()map()filter()every()some()reduce()concat()flat()flatMap()原创 2024-12-30 17:57:16 · 696 阅读 · 0 评论 -
javaScript--RegExp 对象
RegExp正则表达式:用于定义一些字符串的规则;可以根据正则表达式,来检查一个字符串是否符合规则,将字符串中符合规则的内容提取出来。正则表达式不加引号。 匹配中文字符的正则表达式原创 2018-06-19 17:22:41 · 589 阅读 · 0 评论 -
URLSearchParams:JavaScript中的URL查询参数处理工具
我们可以看到URLSearchParams的强大之处,它简化了URL参数的获取、解析、构建和更新过程。无论是从URL中获取参数值,还是构建具有特定参数的URL,URLSearchParams都是一个非常有用的工具。在上述示例中,通过window.location.search获取当前URL的查询参数部分,并使用URLSearchParams对象解析该参数。除了获取和解析URL参数,URLSearchParams还提供了方便的方法来构建和更新URL参数。url-search-params-polyfill原创 2024-07-29 09:32:10 · 1675 阅读 · 0 评论 -
x-www-form-urlencoded、application/json到底是什么
在http协议中规定了GET、HEAD、POST、PUT、DELETE、CONNECT 等请求方式,其中比较常用的就是post和get,其中post用来向服务器提交数据,post只规定了提交的数据必须放在请求的中,但是并没有规定传输数据的编码方式。比较主流的有如下的几种编码方式1.application/x-www-form-urlencoded (HTTP中默认的提交数据的方式)2.multipart/form-data3.application/json4.text/xml原创 2023-08-13 09:43:58 · 8243 阅读 · 0 评论 -
js跨域的解决方案
指的是浏览器不能执行其他网站的脚本,简单来说是浏览器同源政策的限制,浏览器针对于的限制。两个页面拥有相同的协议,端口,域名就是同源,如果有一个不相同就是不同源。保护用户,防止一些网站盗取用户信息。1、通过jsonp跨域2、跨域资源共享(CORS)3、document.domain + iframe跨域4、location.hash + iframe5、window.name + iframe跨域6、postMessage跨域7、nginx代理跨域8、nodejs中间件代理跨域(非vue、v原创 2023-05-15 17:34:42 · 15372 阅读 · 0 评论 -
js高级----回顾new做了什么、prototype、__proto__、constructor、原型链、继承、Class
回顾new做了什么、prototype、__proto__、constructor、原型链、继承、ClassClass类里面super是干嘛的super()执行父类的构造函数super()返回的是子类的实例为什么class中的方法可以使使用箭头函数对象、函数都会有_proto_这个属性,对象并不具有prototype属性,只有函数才有prototype属性原创 2019-04-10 12:20:34 · 703 阅读 · 0 评论 -
刨析 JS 中的forEach、for in、for of三类循环原理和性能
一、for 循环和 while 循环的性能对比优点:程序简洁,结构清晰,循环初始化,循环变量化,循环体和循环条件位置突出 循环是可以中断循环(利用break语句或return语句)。缺点:结构比while循环复杂,容易出编码错误let arr = new Array(999999).fill(1)console.time('forTime')for(let i = 0; i< arr.length; i++){}console.timeEnd('forTi...原创 2022-04-01 16:14:57 · 10631 阅读 · 0 评论 -
JS中String、string和““的区别
1、new String()var str = new String("csdn"); //类型为object表示类型引用,构造函数新建对象,在运行时创建2、String()var str = String("csdn"); //类型为string表示类型转换,类比的还有Number、Boolean、Object ..String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别:.toString()可以将所有原创 2022-01-07 13:32:06 · 2534 阅读 · 0 评论 -
面试题---Set和Map的区别;Map和Object 的区别
一、Set和Map的区别简述:Set 和 Map 主要的应用场景在于 数据重组 和 数据储存。 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。集合 与 字典 的区别:共同点:集合、字典 可以储存不重复的值 不同点:集合 是以 [value, value]的形式储存元素,字典 是以 [key, value] 的形式储存集合(Set):ES6 新增的一种新的数据结构,类似于数组,成员唯一(内部元素没有重复的值)。且使用键对数据排序即顺序存储。原创 2021-12-17 15:26:18 · 8499 阅读 · 2 评论 -
ajax、axios、alova的区别
axios 是目前流行的基于 Promise 的 HTTP 请求库,它可以在浏览器和 Node.js 中工作。axios 支持各种请求类型、拦截请求和响应等等。axios 通过 Proalova 是一个基于Vue.js 和 async/await的 HTTP 请求库。它也类似于 axios,提供了请求拦截、响应拦截、取消请求等功能,并且根据 Vue 的特点,可以非常方便地和 Vue.js 集成。和 axios 不同的是,alova 使用 async/await 进行异步操作,让代码更加简洁易懂。。})})原创 2021-12-15 22:36:48 · 1400 阅读 · 0 评论 -
js---浅拷贝与深拷贝
数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和引用数据类型。基本数据类型的特点:直接存储在栈(stack)中的数据引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里浅拷贝与深拷贝是只针对Object和Array这样的引用数据类型JSON.parse(JSON.stringify()) 弊端递归实现深拷贝原创 2021-12-09 16:07:26 · 669 阅读 · 0 评论 -
js---类的创建、new做了什么 和 继承
js---类的创建、new做了什么 和 继承原创 2021-11-03 19:37:05 · 1525 阅读 · 0 评论 -
js原生--防抖和节流
防抖:事件被调用后,在执行之前无论被调用多少次都会从头开始计时节流:不管事件被调用多少次,总是按规定时间间隔执行防抖和节流的作用都是减少http请求,优化性能可以用闭包进行封装 传入两个参数 一个是要执行的函数 一个间隔时间定义一个标记符 作用是 判断 清除定时器 然后返回一个函数 这个函数进行判断标记符 如果为true 就返回 否则 就把标记符赋值一个setTimeout 然后执行传入的函数,原创 2021-11-03 11:10:53 · 888 阅读 · 0 评论 -
clipboard.js实现复制粘贴
clipboard.js 用于实现点击复制,根据官方文档,我如下写了一个例子,结构:原创 2021-06-15 10:02:41 · 959 阅读 · 0 评论 -
js 同时实现单击事件和双击事件
js单击和双击事件同时存在,但是各个事件执行不同的功能。var time = null;//单击事件function click(){ //取消上次延时未执行的方法 clearTimeout(time); //设置延时300ms time = setTimeout(function(){ //在此写单击事件要执行的代码 ... },300);} //双击事件function dblclick(){ //取消上次原创 2021-04-23 18:28:07 · 892 阅读 · 0 评论 -
setTimeout()/setInterval()参数问题setTimeout(fun,0)
setTimeout/setInterval的常见用法是让某个方法延迟执行。setTimeout/setInterval方法是挂在window对象下的。1.注意setTimeout引用的是全部变量还是局部变量?,当直接调用外部函数方法时,实际上函数内部的变量已经变成全局。2.提醒我防止出错的,用匿名函数不容易出错。3.setTimeout最快执行时间是4毫秒。4.使用setTimeout的函数会比...原创 2018-06-20 17:39:11 · 3159 阅读 · 1 评论 -
js--sort()
js---数组中的sort()排序方法说明如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。array.sort()方法默认是升序排序,如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较...原创 2018-11-05 13:02:47 · 261 阅读 · 0 评论 -
js中的 || 、&& 、! 、!! 运算符详解(取值)
js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean)比较后,再进行运算1.1两边条件都为true时,结果才为true;1.2如果有一个为false,结果就为false;1.3当第一个条件为false时,就不再判断后面的条件注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的!!转载 2020-12-31 14:39:51 · 3367 阅读 · 0 评论 -
YouTube---获取iframe的时间
YouTube教程https://developers.google.com/youtube/iframe_api_reference?csw=1后台上传YouTube视频链接,获取这个视屏的时长。主要代码:1.获取videoId // 获取YouTube视频的videoId function matchYoutubeUrl(url) { var p = /^(?:https?:\/\/)?(?:www\.)?(?:youtu\..原创 2020-12-28 12:32:02 · 1498 阅读 · 0 评论 -
video视频属性、获取视频时间
<button id="btn" onclick="getInfo()">提交</button> <div> <!-- 属性: autoplay="autoplay" 如果出现该属性,则视频在就绪后马上播放 controls="controls" 如果出现该属性,则向用户显示控件,比如播放按钮 loop="l...原创 2020-12-17 18:25:28 · 2316 阅读 · 0 评论 -
js--纯函数
定义简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。这么说肯定比较抽象,我们把它掰开来看:函数的返回结果只依赖于它的参数。 函数执行过程里面没有副作用。 不能调用Date.now()或Math.random()等不纯的方法,因为每次会得到不一样的结果。let a = 1const foo = (b) => a + bfoo(2) // => 3foo 函数不是一个纯函数,因为它返回的结果依赖于外部变量 a,我们在不知转载 2020-11-26 18:19:28 · 282 阅读 · 0 评论 -
js---跨域
js同源策略:含义:浏览器安全的基石是“同源政策”(same-origin policy)“,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。最初,它的含义是指,A 网页设置的 Cookie,B 网页不能打开,除非这两个网页“同源”。所谓“同源”指的是”三个相同“。同源条件(三个相同):协议相同 域名相同 端口相同举例:http://www.example.com/dir/page.html 这个网址,协议是http://,域名是www.example.c转载 2020-10-23 15:18:40 · 270 阅读 · 0 评论 -
$().click()和$().on(“click“, “要选择的元素“, function(){})的区别
前言jQuery的出现,大大简化了对dom的操作,但是如果不是仔细阅读api和进行操作,就不知道其中最大的优点和使用方式。就拿$().click()和$().click()和(document).on(‘click’,‘要选择的元素’,function(){})来说,都是点击事件的操作,但是也有不同的地方。$(选择器).click(function(){}):页面中已经存在的DOM(只针对与页面已存在的选择器)。$(ducument).on(‘click’,‘要选择的元素’,function(原创 2020-07-17 11:01:10 · 1180 阅读 · 0 评论 -
js中事件捕获和事件冒泡(事件流)
其实不仅在js中,在面向对象的编程语言中或多或少涉及到这个问题。js编程的事件全解,你可以到我的主页,这里给你重点讲一下js中的事件捕获和事件冒泡。事件捕获和冒泡的定义上图为网页事件的捕获和冒泡过程。 冒泡型事件:子元素事件会向父元素传递,触发父元素的同类事件。事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。 捕获型事件:事件从最外层...转载 2018-10-22 22:30:38 · 721 阅读 · 0 评论 -
js高级03--事件对象、事件委托
Ie9以下浏览器中的事件对象是放在全局中的window.event;解决兼容性:event = event || window.event事件委托(就是将事件绑定到父级/爷爷级对象上,通过事件对象的target属性来控制子级对象的改变):event.target(点击的目标对象)<!DOCTYPE html><html lang="en"><head> &...原创 2018-07-08 20:50:32 · 355 阅读 · 1 评论 -
window.open()
window.open()方法可以导航到一个特定的URL,也可以打开一个心的浏览器窗口,一般可以接受三个参数:1.要加载的URL2.窗口名称或窗口的目标3.一个特殊的字符串(控制窗口的属性,属性之间用逗号分开)【注】不命名会每次打开新窗口;命名的第一次打开新窗口,之后崽这个窗口中加载 <button type="button" id="btn1">点击打开新窗口</button> window.onload = function() { docu原创 2020-07-03 15:13:00 · 373 阅读 · 0 评论 -
Unexpected token o in JSON at position 1 报错原因
写在前面的话这个问题在之前做项目时碰到过一次,当时按照网上的做法,去掉JSON.parse()这一层转换后就没有这个报错了,数据也能正常使用,就没多想,也没深究是什么原因。可是这次又碰到了,所以这次必须要弄明白原因。JSON更多知识:https://blog.youkuaiyun.com/muzidigbig/article/details/83305325报错的原因因为你要转换...原创 2019-11-22 12:13:59 · 24320 阅读 · 3 评论 -
为什么0.1+0.2 !== 0.3?
简言之,这与JavaScript在二进制中存储浮点数的准确程度有关。在Google Chrome控制台中输入一下公式将得到:0.1+0.2; //0.300000000000000040.1+0.2-0.1; //0.200000000000000040.1+0.7; //0.79999999999999990.1+0.9; //1big.js 支持任意精度的小数运算,适用于金融、科学计算等需要高精度的场合。千分位分割数字原创 2019-10-09 23:22:54 · 1011 阅读 · 0 评论 -
js防止重复点击、防止点击过快实用方法
方式一:原理很简单:利用延时器setTimeout;防止重复点击可以添加一个开关,让这个开关默认为true,第一次点击将其变为false,点击事件的执行需要判断这个开关是否为true,为true执行,false不执行。例子如下: var isclick = true; function fn(){ if(isclick){ ...原创 2019-04-03 14:33:45 · 12310 阅读 · 1 评论 -
Object.is(obj1,obj2)与比较操作符===、==
在说明Object.is()与===、==的区别之前,我们先分别介绍Object.is()与比较操作符。一、严格相等===全等操作符比较两个值是否相等,两个被比较的值在比较前都不进行隐式转换。如果两个被比较的值具有不同的类型,这两个值是不全等的,否则,如果两个被比较的值类型相同,值也相同,并且都不是number类型时,两个值全等。最后两个值都是number类型,当两个都不是NaN,并且数值...原创 2019-10-04 16:21:54 · 1313 阅读 · 0 评论 -
js中getBoundingClientRect()方法详解
https://www.cnblogs.com/Songyc/p/4458570.htmlhttps://blog.youkuaiyun.com/gao_xu_520/article/details/80365799转载 2019-10-02 23:00:39 · 773 阅读 · 0 评论 -
window---页面跳转href+替换replace()+刷新reload()
window.location.href/replace()/reload()--页面跳转+替换+刷新一、最外层top跳转页面,适合用于iframe框架集top.window.location.href("${pageContext.request.contextPath}/Login_goBack");二、跳转的区别1.window.location.href=“url”:改...原创 2018-12-06 14:33:31 · 9306 阅读 · 0 评论 -
js---获取url、得到url?号后面的参数、replace()去除字符串的首尾空格
首先,我们这里有一个 url,是 http://www.a.com/list/2.html?page=2&color=4&size=3#pic.我们访问访问这个地址,打开控制台,输入window.location,会得到如下图的结果一、获取路径/设置或获取对象指定的文件名或路径。alert(window.location.pathname);//设置或获取整个...原创 2018-12-06 12:03:33 · 3876 阅读 · 0 评论 -
js---随机产生n个不重复的Number类型的数/英文字母
一、随机产生n个不重复Number类型的数<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scal原创 2018-12-05 17:26:29 · 2004 阅读 · 0 评论 -
js--计算数组中重复出现元素的个数
一、有时候的根据需求计算数组中某个元素重复出现的个数var arr = ["apple","orange","apple","orange","pear","orange"];计算出来重复出现的元素个数:{apple: 2, orange: 3, pear: 1}二、代码实现 //统计一个数组中有多少个不重复的单词: // 不用reduce时: var arr = ["apple","orange","apple","orange","pear","orange"]原创 2018-11-17 11:30:28 · 22591 阅读 · 7 评论 -
事件冒泡 以及onmouseenter 、 onmouseover(冒泡) 、onmousemove(冒泡)的区别
一. onmouseenter、onmouseoveronmouseenter 事件在鼠标指针进入到绑定事件的那个元素上时触发。该事件通常与 onmouseleave(在鼠标指针离开绑定事件的那个元素上时触发) 事件一同使用。onmouseenter 事件类似于 onmouseover 事件。 唯一的区别是 onmouseenter 事件不支持冒泡 。二. 实例演示onmousemov...原创 2018-11-23 16:34:31 · 8035 阅读 · 0 评论 -
JavaScript--查看代码运行效率console.time()与console.timeEnd()用法
程序运行时间计算:注意:测试代码运行时间的话console.time()与console.timeEnd()要一起使用,这是一个组合;这两个之间的代码就是要运行测试程序的时间<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&原创 2018-11-19 11:02:11 · 775 阅读 · 0 评论 -
即学即用:网页常用的防复制代码
最牛的防复制代码1.将此代码粘贴到body中可以有效防选中防复制和防鼠标右键<script type="text/javascript"> document.body.oncontextmenu = document.body.ondragstart = document.body.onselectstart = document.bod...转载 2018-11-19 09:44:53 · 4138 阅读 · 0 评论 -
jq获取file表单选择文件的路径、名字、大小、类型
一、问题在使用file表单时想知道选择的文件的路径、名字、大小、类型?二、知识点1.input表单会触发change事件2.获取路径 触发这个事件的对象调用val()函数3.文件名 触发事件后会有一个事件对象e.currentTarget.files[0].name4.文件大小 e.currentTarget.files[0].size 字节5.文件类...原创 2018-11-14 10:18:44 · 17779 阅读 · 8 评论 -
js--嵌套的数组扁平化(多维数组变成一维数组)、push()与concat()区别
数组的扁平化:将多维数组变成一维数组对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法:方法一 :递归一function parseArr(arr,res){ var i=0; for(i=0;i<arr.length;i++){ if(arr[i] instanceof Array){ ...原创 2018-11-06 07:38:41 · 10199 阅读 · 0 评论