博主:DongJiang
码龄:7年
等级:LV.22级
文章:631
访问:5233623
博客简介:记录与分享
博客创建时间:2018-04-12
博客主页 立即前往

开发笔记

0

什么是作用域和作用域链?

作用域是指变量和函数在代码中的可访问范围

作用域链是指在代码中查找变量和函数的过程,当一个变量或函数在当前作用域中找不到时,它会向上层作用域继续查找,直到找到为止,这种层层嵌套的查找关系形成了作用域链。

分类:Javascript 胡学长 2024-05-19
0

创建一个空数组/空对象有哪些方式?

创建空对象

1.通过字面量: {}

2.通过Object

new Object()

3.通过函数

function a() {
   this.b = 2
}
let c = new a()

4.通过Object.create

Object.create()

创建空数组

1.通过字面量:[]

2.通过Array

new Array()

3.通过Object.create

Object.create(Array.prototype)
分类:Javascript 胡学长 2024-05-19
0

实现水平垂直居中的方式?

1、通过绝对定位的方式 absolute 负margin

2、absolute transform (过渡)

3、absolute margin auto

4、使用flex布局设置居中

5、给容器加给伪元素line-height

6、tabel-cell实现垂直居中

分类:HTML5 现松 2024-05-19
0

javascript合并对象的几种方法

1、使用Object.assign()方法

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。

2、使用展开运算符...(ES6语法)

对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

3、使用for...in循环(递归赋值)

4、使用lodash的merge方法(如果已经在项目中使用了lodash)

5、jquery中的extend()

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

分类:Javascript 现松 2024-05-19
0

css样式中:link和@import的区别

标签:样式表css3

两者都是外部引用css的方式。但是有一定的区别:

1. 从属关系:

link是一个xhtml标签,除了加载css外,还可以定义 RSS、rel 连接属性等;

@import属于css范畴,只能加载css。

2. 加载顺序:

link引用css的时候,在页面载入的同时加载;

@import需要页面完全载入以后才加载。

3.兼容性:

link是xhtml标签,无兼容问题;

@import是在css2.1提出的,只可在 ie5 才能识别,低版本的浏览器不支持。

4.DOM可控制性:

link支持使用javascript控制dom去改变样式;

@import不支持。

分类:CSS3 现松 2024-05-19
0

v-for循环为什么一定要绑定key?

标签:v-forv-for循环

vue中列表循环需加:key="唯一标识" 唯一标识可以是item里面id index等,因为vue组件高度复用增加Key可以标识组件的唯一性,为了更好地区别各个组件 key的作用主要是为了高效的更新虚拟DOM

1、vue更新已渲染过的元素时,默认使用就地复用策略(如果该元素dom未修改,则复用之前的元素,否则重新渲染这一项)。

2、key的作用是唯一标识组件元素,辅助判断新旧vdom节点在逻辑上是不是同一个对象,是否有更新

vue是通过比对组件自身新旧vdom进行更新的。

分类:Vue 东江哥 2024-05-19
0

什么是window对象? 什么是document对象?

标签:window对象

window对象是指浏览器打开的窗口。是 JavaScript 中的全局对象,在浏览器环境中始终存在且可直接访问。

document对象是Document对象(HTML 文档对象)的一个只读引用,window对象的一个属性。

分类:Javascript 东江哥 2024-05-19
0

vue中$route和$router的区别

标签:路由vue

1、$router是用来操作路由,$router是VueRouter的一个实例,他包含了所有的路由,包括路由的跳转方法,钩子函数等,也包含一些子对象(例如history)。

2、$route是用来获取路由信息,$route是一个跳转的路由对象(路由信息对象),每一个路由都会有一个$route对象,是一个局部的对象。包括 path,params,hash,query,fullPath,matched,name 等路由信息参数。

分类:Vue 秋林 2024-05-19
0

JavaScript 运行机制以及Event Loop(事件循环)

JavaScript执行机制通常指的是它的单线程事件循环任务队列

单线程:

JavaScript在浏览器中是单线程的,意味着同一时间只能执行一个任务,后续的任务必须排队等候。

事件循环:

JavaScript执行时,会形成一个执行栈和一个任务队列。当执行栈为空时,会从任务队列中取出任务执行。

任务队列:

任务队列通常包括宏任务和微任务。宏任务(Macro Task)如setTimeout、setInterval、I/O操作、UI渲染等;微任务(Micro Task)如Promise、MutationObserver等。

分类:Javascript 秋林 2024-05-19
0

JS中事件处理机制包含事件委托、事件捕获和事件冒泡

1、事件委托(Event Delegation)

事件委托是一种利用事件冒泡机制的技术,它允许我们将事件处理程序绑定到父元素上,而不是在每个子元素上都绑定事件处理程序。 当一个事件发生在子元素上时,它会冒泡到父元素,然后由父元素上的事件处理程序来处理。这样做的好处是减少了事件处理程序的数量,尤其适用于动态生成的内容。 举例来说,如果有一个列表,我们希望对列表中的每个项都执行相同的操作,那么我们可以将点击事件处理程序绑定到整个列表的父元素上,而不是在每个列表项上都绑定。

2、事件捕获(Event Capturing)

事件捕获是事件处理的第一个阶段,在事件到达目标元素之前发生。 当一个事件发生时,它会从文档树的根节点开始向下传播至目标元素。在这个过程中,如果某个元素在捕获阶段上绑定了事件处理程序,那么这些事件处理程序会按照捕获的顺序被依次执行。 事件捕获阶段很少被使用,因为它相对不常见,而且大多数情况下我们更关心事件的冒泡阶段。

3、事件冒泡(Event Bubbling)

事件冒泡是事件处理的第二个阶段,在事件到达目标元素之后发生。 当一个事件发生时,它会从目标元素开始向上冒泡至文档树的根节点。在这个过程中,如果某个元素或者它的祖先元素上绑定了事件处理程序,那么这些事件处理程序会按照冒泡的顺序被依次执行。 事件冒泡是 JavaScript 中最常用的事件处理机制,因为它使得我们可以在较高级别的元素上捕获事件,并且更容易管理事件处理程序。

分类:Javascript 秋林 2024-05-19
0

JS中数组去重的方法都有哪些?

1、使用 Set 去重(ES6 中最常用)

2、使用 indexOf()

3、使用includes()方法

4、使用双重for循环

5、使用单重for循环

6、使用filter()方法

7、使用reduce()方法

8、使用Map对象

分类:Javascript 胡学长 2024-05-19
0

移动端如何适配不同屏幕尺寸

1、使用响应式布局:使用CSS媒体查询和弹性布局来根据屏幕尺寸调整页面布局和元素大小。通过设置百分比、em或rem单位来实现元素的相对大小。

2、使用Viewport:通过设置Viewport元标签来控制页面在移动设备上的显示。可以使用来设置Viewport的宽度为设备宽度,并且禁用缩放。

3、使用CSS Flexbox或Grid布局:这些布局技术可以帮助您更轻松地创建自适应的布局,使元素在不同屏幕尺寸下自动调整位置和大小。

4、使用CSS媒体查询:通过使用@media规则,可以根据不同的屏幕尺寸应用不同的CSS样式。您可以根据需要设置不同的断点,并在不同的屏幕尺寸下应用不同的样式。

5、使用流式布局:使用百分比单位和自适应容器来创建流式布局,使页面元素根据屏幕尺寸自动调整大小。

6、使用图片适配:使用srcset和sizes属性来为不同屏幕尺寸提供不同大小的图片,以减少加载时间和带宽消耗。

7、使用JavaScript库:例如,使用Bootstrap或Foundation等前端框架,它们提供了一些内置的响应式布局和组件,可以帮助您更轻松地实现移动端适配。

分类:HTML5 胡学长 2024-05-19
0

关于弹性布局flex:1的三种属性

标签:flex弹性布局

flex: 1 是一个简写的 CSS 声明,它包含三个属性:flex-grow、flex-shrink 和 flex-basis。它们分别代表:

flex-grow:定义项目的放大比例,默认为0,即如果存在剩余空间,也不会放大。

flex-shrink:定义项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

flex-basis:定义了在分配多余空间之前,项目占据的主轴空间(main size),默认值为auto,即项目的本来大小。

简写为 flex: 1 实际上相当于 flex: 1 1 auto。

例如,在一个 flex 容器中,如果你想让一个子元素占据剩余空间的全部,你可以这样设置:

分类:CSS3 秋林 2024-05-19
0

vue3.0和vue2.0的区别

标签:vue2vue3

Vue.js是一款流行的用于构建用户界面的开源JavaScript框架。Vue.js库的最新版本是Vue3.0,它相较于之前的版本(如Vue2.0)有许多新的特性和改进。

1、响应式系统升级

2、更小的体积

3、更好的性能

4、Composition API

5、TypeScript支持

6更强大的工具链

分类:Vue 秋林 2024-05-19
0

HTML与CSS3伪元素和伪类详解

标签:伪类伪元素

一、伪类(pseudo classes)

  用于已有元素处于某种状态时为其添加对应的样式,但是通过DOM树又无法表示这种状态,就可以通过伪类来为其添加样式。

例如:当用户悬停在指定元素时,可以通过:hover来描述这个元素的状态,虽然它和一般CSS相似,可以为已有元素添加样式,但是它只有处于DOM树无法描述的状态下才能为元素添加样式。

二、伪元素(pseudo elements)

  用于创建一些不在DOM树中的元素,并为其添加样式。

  例如:我们可以通过:before来在一个元素之前添加一些文本,并为这些文本添加样式,虽然用户可以看见这些文本,但是它实际上并不在DOM文档中。

分类:CSS3 现松 2024-05-19
0

操作数组的方式有哪些?

标签:数组方法

1、 push (将指定的元素添加到数组的末尾,并返回新的数组长度)

2、pop (从数组中删除最后一个元素,并返回该元素的值)

3、shift (从数组中删除第一个元素,并返回该元素的值)

4、unshift (向数组首位添加一个或多个元素,并返回新的数组长度)

5、concat (合并多个数组或值,返回一个新的数组)

6、slice (截取数组的一部分,返回一个新的数组)

7、splice (删除、替换或添加数组的元素,并返回被删除的元素)

8、filter (过滤数组中的元素,返回一个新的数组)

9、map (对数组中的每个元素进行操作,返回一个新的数组)

10、sort (对数组进行排序)

11、reverse (翻转数组中的元素)

12、indexOf (查找数组中指定元素的索引)

13、find (查找数组中符合条件的第一个元素)

14、findIndex (查找数组中符合条件的第一个元素的索引)

15、includes (判断一个数组是否包含一个指定的值)

16、every (判断数组内的所有元素是否都能通过指定函数的测试)

17、some(判断数组中是否至少有一个元素通过了指定函数的测试)

18、join (将一个数组的所有元素连接成一个字符串并返回这个字符串)

19、reduce (计算数组所有元素的总和)

20、forEach(数组循环遍历)

分类:Javascript 现松 2024-05-19
0

vue-router有哪几种导航钩子?

vue-router有3导航钩子分别是:全局导航钩子、组件内的导航钩子、路由独享钩子。

1、全局导航钩子

作用:路由跳转前触发,跳转前进行判断拦截

组件内的导航钩子

1)beforeRouteEnter 在进入当前组件对应的路由前调用

2)beforeRouteUpdate 在当前路由改变,但是该组件被复用时调用

路由独享钩子

可以在路由配置上直接定义 beforeEnter

3)beforeRouteLeave 在离开当前组件对应的路由前调用

分类:Vue 现松 2024-05-19
0

delete和Vue.$delete删除数组的区别

在Vue.js中,delete操作符和Vue.$delete方法都用于删除数组中的元素,但它们之间有一个关键的区别:

delete操作符:这是JavaScript的原生操作符,用于删除对象的属性。当使用它来删除数组中的元素时,它不会触发Vue的响应式更新机制。也就是说,数组的长度并不会改变,如果后续继续访问已删除元素的索引,会得到undefined。

Vue.$delete方法:这是Vue实例提供的一个方法,用于删除数组中的元素,并确保更新视图。这是一个Vue 2.x的方法,在Vue 3.x中应使用Vue.delete。

总结:

delete 数组自带的方法,删除后对应值变为 empty/undefined,数组长度不变,键值不变。

vue.$delete 会删除数组的键值对,数组长度变化。

分类:Vue 东江哥 2024-05-19
0

vue-router路由模式有几种,它们有什么区别??

标签:vue-router路由

VueRouter的路由模式有三种:hash模式、history模式和abstract模式。

1:Hash 模式(默认):

在URL中的路径部分以 # 符号开头。

比如:http://www.xxx.com/#/home。

在hash模式下,URL的hash部分的改变不会导致浏览器向服务器发送请求,可以通过监听hashchange事件来触发相应的路由变化。

2:History 模式:

通过使用HTML5的pushState和replaceState方法来改变URL,不再使用hash作为URL的一部分。

比如:http://www.xxx.com/home。

在history模式下,URL的改变会导致浏览器向服务器发送请求,因此需要服务器的支持来处理这些URL。

3:Abstract 模式:

在无法使用浏览器的history模式和hash模式时,可以选择使用abstract模式。在abstract模式下,只会改变应用的内存状态,并不会改变URL。这种模式适合于在非浏览器环境中使用VueRouter,比如在Node.js中渲染Vue应用。

分类:Vue 东江哥 2024-05-19
0

vuex是什么?怎么使用?哪种功能场景使用它?它有哪几种属性?

标签:vuex状态管理

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。简单来说就是:应用遇到多个组件共享状态时,使用vuex。

场景:多个组件共享数据或者是跨组件传递数据时

vuex有5种属性分别是State , Getter , Mutation , Action , Module (就是mapAction)

分类:Vue 东江哥 2024-05-19
0

Vue请求初始化数据放在Created还是Mounted?

标签:CreatedMounted

mounted

  如果把所有请求放在created里面的话,请求过多会,加载太慢会导致页面出现短暂的白屏情况,一般上我写的话,接口不复杂会放created里面,接口多复杂的话会放在mounted里面.

mounted

  created 是加载DOM,html之后 就马上执行, 比如初始化,获取屏幕高度调整,赋值等等,而mounted就是执行包括js之后,准备开始调用方法,也就是说 类似传统开发那样,先加载jquery 再调用插件

分类:Vue 胡学长 2024-05-18
0

vue中的$nextTick的作用及使用场景

一、$nextTick的作用

$nextTick() 是 Vue 提供的一个异步方法,用于在 DOM 更新之后执行回调函数。在 Vue 中,DOM 的更新是异步的,即 Vue 异步执行更新队列,而不是直接操作 DOM。

$nextTick() 主要用于确保在 DOM 更新完成后执行一些操作,例如在更新后操作 DOM 元素、获取更新后的元素尺寸等。

二、特点和用途

$nextTick() 会在 Vue.js 更新队列完成之后,DOM 更新之前调用传入的回调函数。 主要用于确保在 DOM 更新之后执行一些操作,以避免直接操作未更新的 DOM。 通常用于处理需要等待 DOM 更新的情况,比如在修改数据后立即获取更新后的 DOM 元素。

三、使用场景:

1、在执行mounted中方法修改了 data 的值,然后通过 $nextTick 来确保在 DOM 更新后执行回调函数。这样可以保证在回调函数中获取到最新的 DOM 内容。

分类:Vue 胡学长 2024-05-18
0

v-if和v-for这两个指令谁的优先级高

标签:指令v-if

在vue2中,v-for的优先级高于v-if;

在vue3中,v-if的优先级高于v-for。

在vue中,永远不要把v-if和v-for同时用在同一个元素上,会带来性能方面的浪费(每次渲染都会先循环再进行条件判断);想要避免出现这种情况,可在外层嵌套template(页面渲染不生成dom节点),在这一层进行v-if判断,然后在内部进行v-for循环。

如果v-if依赖于v-for中的某一个数据,可以用computed计算属性和filter来实现。

分类:Vue 胡学长 2024-05-18
0

vue父组件调用子组件中的方法和值的几种方式

1. ref

直接在父组件内部给子组件标签添加ref属性,然后通过ref属性来调用子组件的方法。

2. $children

在父组件的方法中,通过 $children 属性来访问子组件实例,并调用子组件的方法,返回的是一个存放所有子组件的数组。

3. $emit $on

子组件向父组件$emit消息发送和父组件$on监听

分类:Vue 胡学长 2024-05-18
0

Vue中keep-alive组件作用详解

标签:缓存keep-alive

Vue中keep-alive组件作用是保留组件状态或避免重新渲染(缓存的作用)。

Vue中keep-alive组件有两个属性include与exclude:

include:字符串或者正则表达式。只有匹配的组件会被缓存

exclude:字符串或者正则表达式。任何匹配的组件都不会被缓存。

keep-alive提供了两个生命钩子,分别是activated与deactivated。因为keep-alive会将组件保存在内存中,并不会销毁以及重新创建,所以不会重新调用组件的created、mounted这些函数。

被 keep-alive 包裹的组件被缓存之后有两个独有的生命周期: activated 和 deactivated。activated 生命周期在组件激活时调用、deactivated 生命周期在组件停用时调用。

分类:Vue 现松 2024-05-18
0

Vue 的父组件和子组件生命周期钩子函数执行顺序

加载渲染过程:

父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 父 mounted

子组件更新过程:

父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated

父组件更新过程:

父 beforeUpdate -> 父 updated

销毁过程:

父 beforeDestroy -> 子 beforeDestroy -> 子 destroyed -> 父 destroyed

分类:Vue 现松 2024-05-18
0

computed 和 watch 的区别和运用的场景?

computed和watch的区别

1、computed是计算属性;watch是监听,监听data中的数据变化。

2、computed支持缓存,当其依赖的属性的值发生变化时,计算属性会重新计算,反之,则使用缓存中的属性值;watch不支持缓存,当对应属性发生变化的时候,响应执行。

3、computed不支持异步,有异步操作时无法监听数据变化;watch支持异步操作。

4、computed第一次加载时就监听;watch默认第一次加载时不监听。

5、computed中的函数必须调用return;watch不是。

6、使用场景:

computed:一个属性受到多个属性影响,如:购物车商品结算。

watch:一个数据影响多条数据,如:搜索数据。 数据变化响应,执行异步操作,或高性能消耗的操作,watch为最佳选择。

分类:Vue 现松 2024-05-18
0

v-show 与 v-if 有什么区别?

标签:指令v-show

设置DOM元素显示隐藏有v-show指令和v-if指令两种。

相同点:两者都是达到显示隐藏的功能

不同点:v-show指令通过修改元素的display属性让其显示或者隐藏,v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果.

分类:Vue 秋林 2024-05-18
0

vue组件slot 插槽有哪些,如何使用?

标签:插槽slot

slot 插槽,可以理解为slot在组件模板中提前占据了位置。当复用组件时,使用相关的slot标签时,标签里的内容就会自动替换组件模板中对应slot标签的位置,作为承载分发内容的出口。

主要作用是复用和扩展组件,做一些定制化组件的处理。

插槽主要有3种

1)默认插槽

2)具名插槽

3)作用域插槽

分类:Vue 秋林 2024-05-18
0

class 与 style 如何动态绑定

标签:vue组件class

vue组件中class 和 style 可以通过对象语法和数组语法进行动态绑定

对象写法

<template>
<div :class="{ active: isActive }"></div>
<div :style="{ fontSize: fontSize }">
</template>
<script>
export default {
data() {
  return {
    isActive: true,
    fontSize: 30
  }
}
}

数组写法

<template>
<div :class="[activeClass]"></div>
<div :style="[styleFontSize]">
</template>
<script>
export default {
data() {
  return {
    activeClass: 'active',
    styleFontSize: {
      fontSize: '12px'
    }
  }
}
}
</script>
分类:CSS3 秋林 2024-05-18
0

vue中常用的修饰符哪些?

表单修饰符

lazy: 失去焦点后同步信息

trim: 自动过滤首尾空格

number: 输入值转为数值类型

事件修饰符

stop:阻止冒泡

prevent:阻止默认行为

self:仅绑定元素自身触发

once:只触发一次

鼠标按钮修饰符

left:鼠标左键

right:鼠标右键

middle:鼠标中间键

分类:Vue 东江哥 2024-05-18
0

router-link上事件无效解决方法

内置组件router-link不生效的原因:router-link会阻止click事件,为决绝这一问题我们在事件绑定上加个native事件修饰符如:

使用@click.native。

.native指直接监听一个原生事件。

分类:Vue 东江哥 2024-05-18
0

vue指令v-model的原理如何实现?

标签:指令v-model

v-model原理:

原生 input 元素若是text/textarea类型,使用 value 属性和 input 事件。

原生 input 元素若是radio/checkbox类型,使用 checked属性和 change 事件。

原生 select 元素,使用 value 属性和 change 事件。

input 元素上使用 v-model 等价于

<input :value="message" @input="message = $event.target.value" />
分类:Vue 东江哥 2024-05-18
0

js中数组合并的方法有哪些

1、 concat关键字 arr.concat(arr2, arr3, ······)

2、 es6 展开运算符(…) […arr1, …arr2,······]

3、 push() push(…arr)

通过push合并数组有以下2中形式

1)使用es6扩展运算符合并

2)结合for循环,遍历一个数组,然后push到另一个数组中。

分类:Javascript 现松 2024-05-17
0

什么是内存泄漏,内存泄漏的原因是什么,应该如何优化?

内存泄露

内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。

可能出现内存泄漏的原因

1、 意外的全局变量

2、 DOM元素清空时,还存在引用

3、 闭包

4、 遗忘的定时器

内存泄漏优化方法

1、 全局变量先声明在使用

2、 避免过多使用闭包。

3、 注意清除定时器和事件监听器。

分类:Javascript 现松 2024-05-17
0

get请求和post请求区别和使用方式

标签:get请求get

关于接口获取数据get请求和post请求区别和使用方式。

特性 get post
参数位置 参数拼接到URL后面 参数在请求体中
参数大小 受限于浏览器url大小,一般不超过32K 1G
安全性 参数暴露在URL中,安全性低 相对get安全性更高些
适用场景 从服务器端获取数据 从服务器端获取数据
缓存 在浏览器中可缓存 不可以缓存
分类:Javascript 胡学长 2024-05-17
0

关于LocalStorage、SessionStorage、Cookie 之间的区别和共同点

localStorage:

localStorage.setItem(key, value)
localStorage.getItem(key)
localStorage.removeItem(key)
localStorage.clear()

sessionStorage:

sessionStorage.setItem(key, value)
sessionStorage.getItem(key)
sessionStorage.removeItem(key)
sessionStorage.clear()
特性 LocalStorage SessionStorage Cookie
存放数据大小 LocalStorage 的存储容量为5MB/10MB SessionStorage 的存储容量为5MB Cookies的存储容量为4KB
数据生命周期 由于它不是基于会话的,因此必须通过 javascript 或手动删除 它是基于会话的,可以按窗口或选项卡工作。这意味着数据仅在会话期间存储,即直到浏览器(或选项卡)关闭 Cookies 根据选项卡和窗口的设置和工作过期
存储方式 客户端只能读取本地存储 客户端只能读取本地存储 客户端和服务器都可以读取和写入 cookie
向服务器传输数据 没有向服务器传输数据 没有向服务器传输数据 存在到服务器的数据传输
浏览器兼容性 支持它的旧浏览器较少 支持它的旧浏览器较少 所有浏览器都支持它,包括旧版浏览器
共同点 都是保存在浏览器端 都是保存在浏览器端 都是保存在浏览器端
分类:Javascript 胡学长 2024-05-17
0

CSS 单位: %, em, rem, px, vh, vw

% – %单位用于设置相对于当前字体大小的字体大小。

em -相对于当前对象内文本的字体尺寸(参考物是父元素的font-size)

注意:这里的 2em 表示当前字体大小的 2 倍。

rem – rem是相对于HTML根元素的字体大小(font-size)来计算的长度单位

px -相对于显示器屏幕分辨率

vh - 相对于视口高度的 1%。

vw – 相对于视口宽度的 1%

分类:CSS3 东江哥 2024-05-17
0

map 和 forEach 的都可以用来遍历,它们有什么区别

标签:数组遍历map

map 和 forEach 的区别是map返回一个新的数组,forEach返回undefined。

使用场景:修改或返回新数组使用map,相反只是做遍历循环时用foreach 或 for

const array = [1, 2, 3, 4, 5]
const arr = array.forEach(x => x * x)
const arr2 = array.map(x => x * x)
console.log(array)  // [1, 2, 3, 4, 5]
console.log(arr)  // undefined
console.log(arr2)  //[1, 4, 9, 16, 25]
分类:Javascript 东江哥 2024-05-17
0

什么是跨域?跨域解决方法有哪些?

跨域是指当请求非同源的URL链接,简单说就是协议,域名,端口中存在有和当前Url不同的就是跨域

跨域解决方法

1)cors:后端服务器设置

2)nginx反向代理

3)jsonp

由于script的src不受同源策略限制,我们可以通过src访问服务器上的脚本进行数据回调 (动态创建script标签,回调函数)

分类:Javascript 东江哥 2024-05-17
0

什么是同源策略,非同源浏览器会有哪些限制

同源策略指的是:协议,域名,端口三者一致

同源策略的目的:是为了保证用户信息的安全,防止恶意的网站窃取数据

如果非同源,浏览器会进行什么限制?

Cookie,LocalStorage和IndexDB 无法读取

Dom不能获得

ajax请求不能发送

分类:Javascript 东江哥 2024-05-17
0

preventDefault()阻止元素默认事件和 stopPropagation()阻止元素事件冒泡

preventDefault()函数: a标签,radio、checkbox复选框等表单元素,div没有默认事件

stopPropagation()来阻止触发的事件

分类:Javascript 东江哥 2024-05-17
0

JS防抖和节流简单理解

标签:防抖节流

函数防抖:是函数在特定的时间内不被再调用后执行。如果n秒内高频事件再次被触发,则重新计算时间。

事件场景:

1)点击按钮事件

2)输入框的自动保存事件

3)浏览器resize事件

函数节流:是确保函数特定的时间内至多执行一次。

事件场景

1)scroll事件,滚动的过程中每隔一段时间触发事件。

分类:Javascript 东江哥 2024-05-17
0

关于typeof和instanceof的用法

标签:typeofinstanceof

1、在判断一个变量是否存在时应该用typeof来判断。

2、当判断一个变量是否是数组类型时使用 instanceof 关键字而不是 typeof。

3、如何判断一个对象是否属于某个类使用instanceof。

分类:Javascript 现松 2024-05-16
0

什么是原型对象和原型链,为什么要使用原型链呢?

1、原型对象(Person.prototype)是 构造函数(Person)的一个实例。

2、JavaScript是⾯向对象的,每个实例对象都有⼀个__proto__属性,该属性指向它的原型对象,这个实例对象的构造函数有⼀个原型属性 prototype,与实例的proto属性指向同⼀个对象。当⼀个对象在查找⼀个属性的时候,⾃⾝没有就会根据__proto__向它的原型进⾏查找,如果 都没有,则向它的原型的原型继续查找,直到查到Object.prototype.proto_为null,这样也就形成了原型链。

原型链的顶层就是Object.prototype,而这个对象的是没有原型对象的。

分类:Javascript 现松 2024-05-16
0

JS中相等运算符(==)和完全相等运算符(===)的区别

1、相等运算符(==)是判断等号两边的值是否相等

2、完全相等运算符(===)是判断等号两边的值和类型是否相等

分类:Javascript 秋林 2024-05-16
0

普通函数和箭头函数有啥区别

1、书写方式不同

2、箭头函数this所指的对象是上层函数作用域里this所指的对象

3、箭头函数不能用作变量提升

4、箭头函数没有构造函数不能实例化

分类:Javascript 秋林 2024-05-16
0

call、bind、apply的区别

标签:thiscall

1、都是用来改变函数执行时的上下文,再具体一点就是改变函数运行时的this指向

2、区别:参数书写方式不同

call(thisObj, arg, arg2, arg3);

apply(thisObj, [args]);

bind(thisObj,arg, arg2, arg3)(); //bind 返回的是一个新的函数,必须调用它才会被执行。

分类:Javascript 秋林 2024-05-16
0

JS中中什么是高阶函数,高阶函数有哪些?

高阶函数是JS函数式编程的最佳特性。它是以函数为参数并返回函数作为结果的函数。一些内置的高阶函数是map、filter、reduce 等等。

分类:Javascript 秋林 2024-05-16
0

什么是箭头函数

箭头函数是在es6或更高版本中编写函数的表达式

箭头函数可以更简洁地定义函数,使用箭头(=>)符号来替代传统的function关键字。这种函数定义方式可以使代码更加简洁易读。

分类:Javascript 秋林 2024-05-16
最新问题

友情链接