JavaScript
分享js中遇到的各种问题
啊啊怪
这个作者很懒,什么都没留下…
展开
-
可选链式操作符
可选链式操作符可选链式操作符允许读取被连接对象的深层次的属性的值而无需明确校验链条上每一个引用的有效性let nestedProp = obj.first?.second;//等价于let temp = obj.first;let nestedProp = ((temp === null || temp === undefined) ? undefined : temp.second);像上面这行代码解读为如果obj.first存在,则取obj.first中的second,如果不存在,则返原创 2021-04-14 10:19:40 · 561 阅读 · 0 评论 -
数组去重的三种实现方法
方法一使用forEach和indexOf方法检测 let arr=[1,2,3,4,5,2,2,1,2] function unique(arr) { //声明一个空数组 const result=[] //遍历原数组 arr.forEach(item=>{ //检测result数组中是否包含这个元素 if(result.indexOf(item)===-1){ //若没有该元素,则插入到result中原创 2021-04-13 18:12:58 · 207 阅读 · 0 评论 -
手写封装js数组一些相关的API函数
map返回一个新的数组,数组中的元素为原始数组调用函数处理后的值 function map(arr, callback) { //声明一个空数组 let result = [] //遍历数组 for (let i = 0; i < arr.length; i++) { //执行回调 result.push(callback(arr[i],i)) } //返回结果 return result } const原创 2021-04-13 17:49:19 · 197 阅读 · 0 评论 -
节流与防抖
防抖所谓防抖,就是指触发事件后在n秒内,函数只能执行一次,如果在这段时间内再次触发函数,则会重新计算函数执行时间简单来说,就是你一直点鼠标的话,这个函数就会一直不触发,当你不点的时候,它就会在n秒后开始执行函数(要注意的是,这n秒内不能点鼠标,如果点了之后,它就会重新计算函数的执行时间)...原创 2021-04-13 15:54:24 · 94 阅读 · 0 评论 -
手写实现call()&apply()&bind()
1、API说明call()语法:call(fn,obj,…args)功能:执行fn,使this为obj,并将后面的n个参数传给fn(功能等同于函数对象的call方法)apply()语法:apply(fn,obj,…args)功能:执行fn,使this为obj,并将后面的n个参数传给fn(功能等同于函数对象的apply方法)bind()语法:bind(fn,obj,…args)功能:给fn绑定this为obj,并指定参数为后边的n个参数(功能等同于函数对象的bind方法)...原创 2021-04-06 23:46:03 · 105 阅读 · 0 评论 -
js踩坑Uncaught SyntaxError: Unexpected token <错误
今天写代码的时候,把接口的函数改了一下,然后重新打包放到服务器上,就出现了下图的错误看了一下控制台的输出,只有一行划红线(是在打包之后的index.html报错)。项目是用vue+element UI写的,本身就没有在HTML页面(.html)写代码,怎么就说我报错了呢然后谷歌了一下午,最后找到解决办法了,尽管原因还不是很了解,但是我的做法就是清缓存,清完就啥事都没有了,也不报错,有哪位大神可以解释一下...原创 2021-01-05 18:26:37 · 1543 阅读 · 1 评论 -
Number类型数值转换
Number()函数基于如下规则执行转换布尔值,true转换为1,false转换为0数值,直接返回null,返回0undefined,返回NaN字符串1、如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。举个例子,Number(1’)返回1,Number(‘123’)返回123,Number(‘011’)返回11(忽略前面的0)2、如果字符串含有有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样忽略前面的0)3、如果字符串包含有效的十六进原创 2020-12-24 22:43:25 · 1146 阅读 · 0 评论 -
Array.forEach()解析
Array.forEach()为每一个数组元素调用一个函数1、概要array.forEach(function(item,index,array),thisValue)2、参数function(必选):在数组的元素上执行的函数,它带有三个参数1、item(必选):元素2、index(可选):元素索引3、arr(可选):数组本身thisValue(可选):执行回调时用作this 的对象3、返回值该方法无返回值4、示例var a=[1,2,3];a.forEach(原创 2020-12-22 22:15:41 · 456 阅读 · 0 评论 -
Array.find()解析
Array.find()返回数组中满足提供的测试函数的第一个元素的值,若没有满足测试函数的元素,则返回undefined1、概要array.find(function(currentValue, index, arr),thisValue){ // 如果返回 true,则返回 item 并停止迭代 // 对于假值(falsy)的情况,则返回 undefined}2、参数function(必选):在数组的元素上执行的函数,它带有三个参数1、currentValue(必选):元素原创 2020-12-16 21:56:35 · 19773 阅读 · 0 评论 -
Array.splice()解析
Array.splice()插入、删除或替换数组元素1、概要array.splice(start,deleteCount,value,...)array.splice()会改变原数组2、参数1、start(必选):开始插入和(或)删除处的数组元素的序号2、deleteCount(可选):要删除的元素个数,从start开始,并包含start处的元素。2.1、如果指定为0,表示插入元素,而不用删除任何元素。2.2、如果deleteCount被省略了,则start之后数组的所有元素都会原创 2020-12-14 23:01:34 · 1032 阅读 · 1 评论 -
Array.slice()解析
Array.slice()返回数组被截取的一部分1、概要array.slice(start,end)2、参数1、start:开始截取的数组下标(必选),如果为负数,则表示从数组的尾部开始计算。也就是说,-1代表最后一个元素,-2代表倒数第二个元素,以此类推2、end:结束截取的后一个(注意这里,是后一个)数组下标(可选),如果没有指定,则截取从start到数组尾部的所有元素。如果为负数,则表示从数组的尾部开始计算3、返回值一个新数组,包含array中从start到end之间的所有元原创 2020-12-14 22:23:46 · 328 阅读 · 0 评论 -
Array.map()解析
Array.map()从数组元素中计算元素1、概要array.map(function)array.map(function(array[i],i,array),o)2、参数function(array[i],i,array):必选,array的每一个元素都会调用的函数,其中1、array[i]:数组元素(必选)2、i:数组下标(可选)3、array:数组对象(可选)o:可选,function调用时的可选this值3、返回值一个新数组,由函数function计算出的元素组成原创 2020-12-14 22:08:50 · 420 阅读 · 0 评论 -
事件委托
什么是事件委托事件委托就是把原本需要绑定在子元素上的响应事件委托给父元素,让父元素来执行。简单来说就是你一个父元素里边可能会有多个子元素,如下 <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul>有这样一个需求,你需要为每个li元素原创 2020-12-11 14:34:54 · 174 阅读 · 0 评论 -
多个值参与&&与运算符、||或运算符的结果解析
或运算符( | | )之前遇到过这样的函数function a(){ return value1 || value2 || value3}查了一下资料或运算符 || 做了如下的事情:从左到右依次计算操作数处理每一个操作数时,都将其转化为布尔值。如果结果是 true,就停止计算,返回这个操作数的初始值如果所有的操作数都被计算过(也就是,转换结果都是 false),则返回最后一个操作数换句话说,就是返回第一个遇到的真值,如果不存在真值,则返回最后一个值举例:alert(1 || 0原创 2020-12-10 17:09:58 · 760 阅读 · 0 评论 -
String.substr()、String.slice()、String.substring()解析
String.substr()提取一个子串概要string.substr(start,length)参数start: 子串的开始位置。如果这个参数是负数,则将从string的尾部开始计算:-1表示最后一个字符,-2表示倒数第二个字符,以此类推length: 该子串的字符数。如果省略这个参数,则返回的子串将包含从开始位置到字符串结束的所有字符返回string的一部分的一个副本,包含string中自start位置开始的length个字符,如果未指定length则包含自start到结尾的所有字符原创 2020-11-19 22:13:01 · 2248 阅读 · 0 评论 -
indexOf()解析
Array.indexOf()查找数组概要array.indexOf(value)array.indexOf(value,start)参数value:要在array中查找的值start:开始查找的可选数组序号。如果省略,则为0返回值一个大于等于start的最小序号值,该序号值处的array元素与value全等。如果不存在匹配元素时,则返回-1如果找到一个value,则返回value在数组中第一次出现的位置String.indexOf()搜索一个字符串概要string.indexO原创 2020-11-19 22:12:20 · 243 阅读 · 0 评论 -
Array.filter()解析
Array.filter()返回通过断言的数组元素概要array.filter(predicate)array.filter(predicate,o)参数predicate:用来判断array中的元素是否需要包含在返回数组中的调用函数o:调用predicate时的可选this值返回值一个新数组,只包含那些让predicate返回真值的数组元素描述filter()会创建一个新数组,包含那些让predicate函数返回真值的array的元素。filter()方法不会修改array本身(注意原创 2020-11-19 22:10:44 · 2929 阅读 · 0 评论