javascript
schurmi
哈哈哈,嘻嘻嘻
展开
-
JS的计算精度 处理方法
会存在浮点数计算精度丢失问题,这个原因不再过多赘述;原创 2023-02-02 09:33:37 · 311 阅读 · 0 评论 -
使用replace替换html字符串中指定内容
第一时间想到用正则去替换,虽然正则一直都有用,但是没有仔细去看replace的具体参数,之前一直用它替换文本,在文档上有这样一句话。最开始想到的办法是在富文本编辑器中添加a标签跳转,这是最简单最方便的办法。但是需求又来了,有些文章并不是都由富文本编辑器生成的,那就无法通过编辑器提添加了,这。在做新闻详情页时,产品需求要在关键字文本内容上添加链接。第二个参数是可以是回调函数,顿时感觉自己太不认真,没仔细看文档。原创 2022-10-27 14:55:10 · 684 阅读 · 0 评论 -
有关JS的多态,封装,继承
在 JavaScript 语言中不存在类的概念,对象也并非从类中创建出来的,所有的 JavaScript 对象都是从某个对象上克隆而来的。封装的目的是将信息隐藏。隐藏实现细节、设计细节以及隐藏对象的类型等。使得对象内部的变化对其他对象而言是不可见的。JavaScript 本身是一门基于原型的面向对 象语言,它的对象系统就是使用原型模式来搭建的。多态最根本的作用就是通过把过程化的条件分支语句转化成对象的多态化,从而消除这些条件分支语句。其他对象或者用户都不关心它的内部实现。封装使得对象之间的耦合变得松散。原创 2022-10-21 11:59:50 · 263 阅读 · 0 评论 -
通过axios下载word 文件
项目中使用axiso下载 word文件通过axios的 post 向后台发起请求word文件流function downWord(){axios.post('/testDownExcelUrl',data,{ responseType:'blob', header:{ 'Content-Type':'application/json;charset=UTF-8',原创 2021-12-27 09:52:47 · 2104 阅读 · 0 评论 -
JS小数计算的问题 为什么0.1+0.2 != 0.3
问题当在计算价格或者其它number类型数据的时候,会发现有意想不到的情况类似0.1+0.2=0.30000000000000004,而不是0.3原因在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。十进制 0.1 转换为二进制为 0.00011001100110011…(循环0011)十进制 0.2 转换为二进制为 0.0011001100110011…(循环0011)所以两者相加结果为 0.0100110011001100110011001100110011001原创 2021-10-21 16:11:59 · 131 阅读 · 0 评论 -
钉钉微应用开发时代码存在缓存
问题钉钉微应用开发,页面更新之后,客户端访问时,依然访问的是老版的页面。需要清除钉钉缓存之后才能 刷新到新页面。但是全公司百十来号人,不能要求每人都清除一下缓存,最好是打开就是改过之后的页面。解决微应用是用vue-cli开发的,钉钉原生webview会将应用缓存cache缓存下来,并且很难通过钉钉内置缓存清除。最后查看打包后的文件发现,所有文件名都是不变的,即使改版后打包的文件名和改版前是一样的。这是导致缓存的原因。解决办法:在vue打包后的文件名添加时间戳,保证每次打包文件名都不一样。这样就不会原创 2021-05-28 16:19:15 · 2480 阅读 · 2 评论 -
页面锚点链接点击平滑滚动
页面通过锚点跳转到指定位置添加平滑滚动效果,当点击锚点时可以平滑滚动到下一个锚点位置。一点思路给需要跳转的节点添加相同的类名section,通过点击事件获取需要跳转的节点索引值$key,使用animate添加动画效果,相对简单 $('html,body').animate({ scrollTop: $(".section").eq($key).offset().top }, 1000, function () { });出现问题在滚轮滚原创 2021-05-15 17:09:15 · 1473 阅读 · 0 评论 -
JS 的小技巧
1.三元运算符新手let hungry = true;let eat; if (hungry == true) { eat = 'yes'; } else { eat = 'no';}老手let hungry = true;let eat = hungry == true ? 'yes' : 'no';2.数字转字符串/字符串转数字新手let num = 15; let s = num.toString(); // number原创 2020-12-18 16:06:30 · 129 阅读 · 1 评论 -
12 个 GitHub 上超火的 JavaScript 奇技淫巧项目,找到写 JavaScript 的灵感!
https://juejin.cn/post/6906126184031977480#heading-10转载 2020-12-17 11:43:28 · 143 阅读 · 0 评论 -
前端需要掌握的JS库
https://my.oschina.net/u/3053834/blog/4749758转载 2020-11-26 17:15:50 · 155 阅读 · 0 评论 -
vue-cli的环境变量
为什么需要环境变量在一个产品的前端开发过程中,一般来说会经历本地开发、测试脚本、开发自测、测试环境、预上线环境,然后才能正式的发布。对于不同的环境,有些配置项会有所差异。服务器地址、接口地址。。。这个时候就需要环境变量和模式了环境变量cli-3.0总共提供了四种方式来制定环境变量:在根目录添加.env文件,配置所有情况下都会用到的配置在根目录添加.env.local 文件,配置所有情况下都会用到的配置,与.env的区别是只会在本地,该文件不会被git跟踪在根目录添加.env.[mode] 文原创 2020-11-21 09:35:22 · 1689 阅读 · 0 评论 -
有关js节流和防抖
节流节流可以控制事件触发的频率放到我们的函数事件里面说就是可以让事件触发变慢,比如说事件触发可以让它在每一秒内只触发一次防抖防抖就是可以限制事件在一定时间内不能多次触发,比如说持续按点击按钮,一顿操作,不加防抖的话也会跟着一顿触发。但是一旦加了防抖,无论你点击多少次,他都只会在你最后一次点击的时候才执行例子 结合防抖和节流<html lang="en"> <head> <meta charset="UTF-8" /> <meta nam原创 2020-05-14 16:42:00 · 131 阅读 · 0 评论 -
JavaScript运行解析(三)
编译型语言&解释型语言编译型: 在代码运行前 编译器将人写好的语言 转换成机器可以识别的的语言解释型: 在代码运行时 将人写好的语言转换成机器可以识别的语言解释型语言: 需要在代码执行前将解释器装在环境中,解释型编译几乎在执行后一瞬间就开始,几乎没有代码优化编译型语言: 在代码写好后再通过编译之后直接就可以运行,运行的是编译完成的代码JavaScript一般被归类为动态语言,或...原创 2020-04-17 15:23:36 · 149 阅读 · 0 评论 -
svelte框架的一些探索
介绍尤雨溪大神对此框架的评:这个框架的 API 设计是从 Ractive 那边传承过来的(自然跟 Vue 也非常像),但这不是重点。Svelte 的核心思想在于『通过静态编译减少框架运行时的代码量』。举例来说,当前的框架无论是 React Angular 还是 Vue,不管你怎么编译,使用的时候必然需要『引入』框架本身,也就是所谓的运行时 (runtime)。但是用 Svelte 就不一样,一个...原创 2019-12-31 09:36:16 · 469 阅读 · 0 评论 -
JavaScript运行解析(二)
箭头函数ES6标准新增了一种新的函数:Arrow Function(箭头函数)。THIS作为普通函数使用:this指向windown作为方法进行调用: this指向该方法的所有者作为构造器进行调用:this指向构造函数的调用,返回值即为一个对象,而这个对象即为构造函数作用域内this的 引用对象,即“函数上下文”。call(),apply()方法调用:函数内部的this...原创 2019-12-26 17:17:05 · 142 阅读 · 0 评论 -
JavaScript运行解析(一)
概述javascript是单线程的解释性语言,单线程就是先执行完一个,再执行另一个,解释性语言就是先翻译一行,再执行一行,先翻译一行,再执行一行,但是js在执行之前通常会先通篇扫描一遍代码,而不执行代码,通篇扫描就是看看代码有没有什么低级语法错误,这个过程(通篇扫描)就叫语法(义)分析,而在通篇扫描完成之后,才真正开始预编译过程,最后才开始解释一行,执行一行,解释一行,执行一行js运行3部曲 ...原创 2019-12-22 23:21:57 · 285 阅读 · 0 评论 -
构造函数内的属性和构造函数prototype属性区别
继承JavaScript 实现继承主要是依靠原型链来实现的。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。new 和 prototype我们在创建对象时可以通过使用构造函数模式创建,通过new操作符创建。new函数内添加独立的属性,同时通过pro...原创 2019-12-20 17:36:42 · 609 阅读 · 0 评论 -
vue-cli3.x history模式出现的问题
vue-cli3.x 和vue-cli2.x配置不一样,3.x精简了好多配置内容,而且将配置项统一都放在了vue.config文件里。在使用vue-cli中路由模式分URL都会带有#号的hash模式,和URL不带#号的history模式,一般使用的都是hash模式,但是在有些情况下,要使用history模式,但是如果使用history模式,不仅需要修改vue的配置,而且需要服务器修改相关配置...原创 2019-08-23 09:45:47 · 1914 阅读 · 0 评论 -
JavaScript的回收机制与闭包
1.垃圾回收JavaScript 中的内存管理是自动执行的,而且是不可见的。我们创建基本类型、引用类型、函数,所有这些都需要内存。当已经不需要某块内存时这块内存还存在着,为了防内存泄漏,引入了垃圾回收机制。间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。2.变量的周期当一个变量的生命周期结束之后它所指向的内存就应该被释放。JavaScript有两种变量,全局变量和在函数中产生...原创 2019-12-13 17:29:22 · 352 阅读 · 0 评论 -
闭包的理解
闭包闭包是指有权访问另一个函数作用域中的变量的函数一个函数里面嵌套另外一个函数。嵌套(内部)函数对其容器(外部)函数是私有的。它自身就形成了一个闭包。一个闭包是一个可以自己拥有独立的环境与变量的的表达式(通常是函数,因为ES6有了块级作用域的概念)。 function t2() { var b = 100; function t3() { return ++b ...原创 2019-10-19 13:35:02 · 248 阅读 · 0 评论 -
IOS点击事件延迟300ms踩坑
追溯至 2007 年初。苹果公司在发布首款 iPhone 前夕,遇到一个问题:当时的网站都是为大屏幕设备所设计的。于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题。这当中最出名的,当属双击缩放(double tap to zoom),这也是会有上述 300 毫秒延迟的主要原因。双击缩放,顾名思义,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会...原创 2019-09-04 19:40:15 · 1411 阅读 · 0 评论