![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Javascript
文章平均质量分 69
半度℃温热
关注最新技术问题并持续维护更新
展开
-
JS版本号比较大小
在项目开发和运行的过程中,总是少不了各类升级。例如某个功能组件需要更高的依赖库、数据项需要进行兼容等等问题。遇到此类问题开发者需要使用版本号来解决。版本号通常由三部分组成:主版本号、次版本号和修订版本号。当你做了向下兼容的功能性新增时,就需要升级次版本号;当你做了向下兼容的问题修正时,就需要升级修订版本号。通常来说升级会涉及到三个点:向下兼容、协商升级、拒绝服务。原创 2024-04-17 22:53:28 · 391 阅读 · 0 评论 -
JS实现大数相加
在JavaScript中,进行大数相加时,由于JavaScript的Number类型有一定的精度限制,直接相加可能会导致精度损失。原创 2024-04-10 21:39:27 · 380 阅读 · 1 评论 -
常用的正则表达式
# 特殊校验- **手机号码:**`/^(\+86)?1[3-9][0-9]{9}$/ (支持+86)`- **固话(电话):**`/^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/`- **Email(邮箱):**`/^(\w-*\.*){6,}@(\w-?)+(\.\w{2,})+$/`- **身份证(18位):**`/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-原创 2021-08-23 17:49:07 · 2301 阅读 · 1 评论 -
JS中slice和splice的区别
# slice()**1、String中**- 语法 `string.slice(start, end)` 抽取一个子字符串- 描述 `slice()`将返回一个含有字符串`string`的片段的字符串或返回它的一个子串。 但是该方法不修改`string`- 参数 `start:`要抽取的片段的起始下标。如果是负数,那么该参数声明了从字符串的尾部开始算原创 2021-08-16 15:08:12 · 1067 阅读 · 1 评论 -
es6中Set、Map、WeakSet和WeakMap的区别
Set Set 类似于数组,本身是一个构造函数,用来生成 Set 数据结构,成员值是唯一且无序的,常用于数组去重 Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化 Set 数据结构允许存储任何数据,无论是基本数据类型值或者是对象引用 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality”,它类似于精确相等运算符(=原创 2021-08-13 15:33:07 · 924 阅读 · 0 评论 -
JS中浅拷贝和深拷贝的几种实现方式
概念 深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。它们最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。简单来说,假设B复制了A,当修改B时,看A是否会发生变化,如果A变了,说明是浅拷贝;如果A没变,那就是深拷贝浅拷贝1. 用 = 号赋值引用地址let obj = { name: '李四', age: 20, sex: '男', tel: /^1[345789]\d{9}$/, address: undefined原创 2020-09-22 21:07:29 · 5017 阅读 · 21 评论 -
ajax的深入理解及封装
概念 AJAX: Asynchronous JavaScript and XML(异步的 JavaScript 和 XML) AJAX 不是新的编程语言,而是一种使用现有标准的新方法,一种用于创建快速动态网页的技术 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个原创 2020-09-22 14:57:04 · 1359 阅读 · 0 评论 -
JS实现新闻播报滚动效果
效果图 1. 横向滚动播报 2. 纵向滚动播报横向滚动<template> <div class="wrapper"> <div class="top"> <div class="top-cont" ref="top_cont"> <div class="begin" ref="t...原创 2020-04-24 15:10:17 · 2752 阅读 · 1 评论 -
JS的堆内存和栈内存
概念 堆和栈都是运行时内存中分配的一个数据区,因此也被称为堆区和栈区,但二者存储的数据类型和处理速度不同。堆(heap) 队列优先,先进先出。用于复杂数据类型(引用类型)分配空间,例如数组对象、object对象(引用类型的值通常大小不固定,所以被存储在堆内存中,不会自动释放);它是运行时动态分配内存的,因此存取速度较慢。栈(stack) 先进后出。主要存放一些基本类型(...原创 2019-04-22 18:38:03 · 2683 阅读 · 1 评论 -
JS继承常用的实现方法、原理和区别
JS是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式// 定义一个父类function Person(name) { // 属性 this.name = name || 'Person'; // 实例方法 this.eat= function(){ ...原创 2019-04-16 22:01:24 · 1439 阅读 · 1 评论 -
JS字符串拼接的几种方式及其性能比较
一、用连接符 “+” 把要连接的字符串连起来var a = '小明'var b = a + '正在吃饭' 只连接100个以下的字符串建议用这种方法最方便二、使用数组的 join 方法连接字符串var arr = ['小明','正在吃饭','呢']var str = arr.join("") 比第一种消耗更少的资源,速度也更快三、使用 ${} 连接字符串var a ...原创 2019-04-17 08:41:44 · 23797 阅读 · 1 评论 -
JS创建对象的多种方式
一、对象字面量创建var person = { name: 'Jack', age: 18, sayName: function () { console.log(this.name) }}缺点: 比较麻烦,每个属性都需要添加二、通过内置构造函数Object创建var person = new Object()person.name = 'Jack'pers...原创 2019-04-17 14:59:16 · 1318 阅读 · 1 评论 -
JS数组去重常用的几种方法
一、双重循环去重function unique(arr) { if (!Array.isArray(arr)) return // 判断传入的是不是数组 for(var i = 0; i < arr.length; i++) { for(var j = i + 1; j < arr.length; j++) { if(arr[i] === arr[j]) { ...原创 2019-04-19 09:46:40 · 1363 阅读 · 1 评论 -
JS中Promise的详解及封装
Promise是什么Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。Promise的特点 1. 象的状态不...原创 2019-04-20 23:06:26 · 8660 阅读 · 7 评论 -
JS中的七大数据类型
七大数据类型 包括五种基本数据类型(Undefined、Null、Boolean、Number 和 String)、一种复杂数据类型(Object)和一种新的原始数据类型(Symbol)三大引用类型 Object类型、Array类型、Function类型Undefined只有一个值,即undefined值使用var声明了变量,但未给变量初始化值,那么这个变量的值就是und...原创 2019-04-21 12:40:02 · 3342 阅读 · 1 评论 -
JS事件轮询机制(Event Loop)
概念 事件轮询 (eventloop) 是"一个解决和处理外部事件时将它们转换为回调函数的调用的实体(entity)" JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。所有任务都需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。任务队列 “ 任务队列 " 是一个先进先出的数据结构,排在前面...原创 2019-05-26 15:45:55 · 8595 阅读 · 3 评论 -
JS中闭包的深入解析
概念 闭包是指可以访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过内部函数访问外部函数的局部变量,利用闭包可以突破作用域链,将函数内部的变量和方法传递到外部。原理 借助函数的立即执行、参数以及函数的 return 返回值,多创建了一层作用域。从而实现外部函数持续性被引用而不能释放内存空间,将值存储下来。特点作为一个函数变量的一个引...原创 2019-04-29 21:51:30 · 1550 阅读 · 1 评论 -
JS中设计模式的深入理解
概念 设计模式是可重用的用于解决软件设计中一般问题的方案构造器模式 在面向对象编程中,构造器是一个当新建对象的内存被分配后,用来初始化该对象的一个特殊函数。在Javascript中几乎所有的东西都是对象,我们经常会对对象的构造器十分感兴趣。 对象构造器是被用来创建特殊类型的对象的,首先它要准备使用的对象,其次在对象初次被创建时,通过接收参数,构造器要用来对成员的属性和方法...原创 2019-04-28 14:36:22 · 1991 阅读 · 1 评论 -
JS数组遍历的几种方法
for 最简单的一种循环遍历方法,也是使用频率最高的一种,可优化var arr = [1, 2, 3, 4, 5, 6]for(var i = 0; i < arr.length; i++) { console.log(arr[i])}// 1 2 3 4 5 6 优化:使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显var...原创 2019-04-27 08:51:25 · 111103 阅读 · 11 评论 -
JS中 call、apply 和 bind 的区别及应用
概述 JS中的 call(),apply() 和 bind() 是 Function.prototype 下的方法,都是用于改变函数执行时的上下文。最终的返回值是你调用的方法的返回值,若该方法没有返回值,则返回 undefined。它们的作用都是改变当前函数 this 的指向。Call() call() 方法接收的是参数列表,简单说就是需要把实参按照形参的个数传进去 ca...原创 2019-04-26 08:41:09 · 1780 阅读 · 1 评论 -
JS中Class类的继承
Class继承 Class 可以通过 extends 关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多class Animate { constructor() { // 默认返回实例对象 this }}class Dog extends Animate { constructor() { super() }} 子...原创 2019-04-25 14:26:29 · 5076 阅读 · 2 评论 -
JS中Class类的详解
概述 在ES6中,class (类)作为对象的模板被引入,可以通过 class 关键字定义类。它可以被看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。 类实际上是个“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。严格模式 类和模块的内部,默认就是严格模式,所以不需要使用 use strict 指定运行模式...原创 2019-04-25 09:43:56 · 14034 阅读 · 2 评论 -
回调地狱的多种解决方式
什么是回调地狱 异步的JavaScript程序,或者说使用了回调函数的JavaScript程序,很难地去直观顺畅地阅读,大量的代码以下面这种方式结束。简单说,就是函数作为参数层层嵌套。代码以此种形式展现时无疑是不利于我们阅读与维护的。setTimeout(function (name) { var catList = name + ',' setTimeout(funct...原创 2019-04-24 14:41:58 · 5888 阅读 · 6 评论 -
JS中Generator函数的详解
概念 Generator 函数是 ES6 提供的一种异步编程解决方案。它既是一个生成器,也是一个状态机,内部拥有值及相关的状态,生成器返回一个迭代器 Iterator 对象,我们可以通过这个迭代器,手动地遍历相关的值、状态,保证正确的执行顺序。特征function 关键字与函数名之间有一个星号(ES6 没有规定,function 关键字与函数名之间的星号,写在哪个位置)函数体内部使...原创 2019-04-24 08:36:35 · 4170 阅读 · 1 评论 -
JS的内存泄露及处理方式
概念 应用程序不再需要占用内存的时候,由于某些原因,内存没有被操作系统或可用内存池回收,就叫做内存泄漏(memory leak)内存的生命周期内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存内存使用:即读写内存,也就是使用变量、函数等内存回收:使用完毕,由垃圾回收机制自动回收不再使用的内存var a = 20 // 在内存中给数值变量分配空间...原创 2019-04-23 09:14:17 · 4618 阅读 · 3 评论 -
JS中使用函数防抖与函数节流
函数防抖原理 触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。简单的说,当一个动作连续触发,则只执行最后一次应用场景搜索功能实现手机号码验证和邮箱验证窗口大小Resize,只需窗口调整完成后,计算窗口大小,防止重复渲染<body><input type="text" id="inp"><scr...原创 2019-04-22 14:21:23 · 1573 阅读 · 4 评论 -
跨域常见的几种解决方式
概念 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。广义的跨域资源跳转:A链接、重定向、表单提交资源嵌入:link、scr...原创 2019-04-22 14:15:51 · 2572 阅读 · 1 评论 -
JS中this指向的深入理解
简述 this 是 JavaScript 语言的一个关键字。它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用 this 的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定 this 到底指向谁 函数的不同使用场合,this 有不同的值。总的来说,this 就是函数运行时所在的环境对象一般的函数调用 一般的函数调用属于全局性调用,因此...原创 2019-07-03 18:04:42 · 1622 阅读 · 0 评论