
JavaScript
光就一个字
这个作者很懒,什么都没留下…
展开
-
JavaScript的数值存储的探析与应用
文章目录JavaScript的数值存储探析学1. 浮点数的存储规则2. Number对象上的特殊值MAX_SAFE_INTEGERMAX_VALUE3. 特殊值的存储学以致用案例分析1.1 精度丢失1.2 大数危机1.3 toFixed()对于小数最后一位为5时进位不正确问题2. 解决方案“修复” 0.1+0.2 == 0.32.2 修复数据展示修复 toFixed()2.4 修复数据运算(+-*/)参考文章:JavaScript的数值存储探析学1. 浮点数的存储规则JavaScript中的所有数字原创 2021-07-30 16:53:42 · 347 阅读 · 0 评论 -
async await 的错误处理方法
1. try/catches6 的初学者必须知道的捕获错误的方法,因为它是相对来说最保险的,既可以捕获同步错误也可以捕获异步错误。捕获异步错误:run();async function run() { try { await Promise.reject(new Error('Oops!')); } catch (error) { error.message; // "Oops!" }}捕获同步错误:run();async function run() {原创 2020-09-01 12:14:14 · 7657 阅读 · 2 评论 -
舒服的小程序吸顶动画
前言今天想优化下用户体验:给小程序商品列表页顶部的标签栏增加个吸顶动画。逻辑是检测用户下滑行为时不吸顶,上滑时吸顶,标签栏未滑离视窗时不处理。并对滑动的处理方法增加节流处理,以优化性能。一、处理页面滚动1.1 页面逻辑页面page_name.js:// ...onPageScroll(e){ this.selectComponent('#goods_list').data._handleScroll(e)}// ...因为业务需要,商品列表goods_list被我封装成组件形式,所以原创 2020-05-15 12:22:14 · 886 阅读 · 0 评论 -
cookie对比storage
相同点:都是保存在浏览器端,且同源。不同点:cookiesession Storagelocale Storage大小限制4k5m或更大5m或更大携带始终在同源的http请求携带仅在本地保存仅在本地保存数据有效期在设置的cookie过期时间前有效仅在关闭当前浏览器窗口前有效始终有效作用域所有同源窗口共享不在不同窗口共享所有同源窗...原创 2018-10-19 17:00:20 · 477 阅读 · 0 评论 -
聊聊前端缓存
基本的网络请求分为3个步骤:请求、处理、响应。后端缓存主要集中在“处理”步骤,通过保持数据库链接,存储处理结果等方式缩短处理时间,尽快进入“响应”步骤。前端缓存则可在剩下的两步:“请求”和“响应”中进行。在“请求”步骤中,浏览器可以通过存储结果的方式直接使用资源,省去了发送请求;而“响应”步骤需要浏览器和服务器共同配合,通过减少响应内容来缩短传输时间。一、按缓存位置分类优先级:Serv...原创 2018-10-19 09:31:36 · 450 阅读 · 0 评论 -
js-原型和原型链
构造函数function Foo (name, age) { // 构造函数命名:大写字母开头 this.name = name this.age = age this.class = 'class-1' // return this // 默认有这一行}var f = new Foo('David', 18)构造函数-扩展var a = {} 其实是var a = new ...原创 2018-10-09 18:32:16 · 258 阅读 · 0 评论 -
JSON
JSON是JavaScript的子集,是一个JS对象,也是一种数据格式作为JS对象:JSON.stringify({a:1,b:2}) // '{a:1,b:2}'JSON.parse('{a:1,b:2}') // {a:1,b:2}作为数据格式它仅有以下几种数据类型:number:和JavaScript的number完全一致;boolean:就是JavaScript的tr...原创 2018-09-30 17:57:01 · 156 阅读 · 0 评论 -
js ===和==
区别===为全等,判断值和值类型==仅判断值,不判断值类型使用场景// 问题:何时用 === 何时用 == ?if (obj.a == null) { // 这里相当于 obj.a === null || obj.a === undefined // 是 jQuery 源码中推荐的写法}...原创 2018-09-30 17:30:27 · 171 阅读 · 0 评论 -
js this的指向
this要在执行时才能确认值,定义时无法确认demo:var a = { name: 'A', fn: function(){ console.log(this.name) }}a.fn() // this === aa.fn().call({name:'B'}) // this === {name:'B'}var fn1 = a.fnfn1() // this ===...原创 2018-10-15 15:37:12 · 177 阅读 · 0 评论 -
vue项目获取url参数
假设我们的url是http://www.demo.com/#/?channel=123&user=user #前的内容不影响import Qs from 'qs'const query = Qs.parse(location.hash.substring(3))let channel = query.channellet user = query.user...原创 2018-09-14 11:16:58 · 14197 阅读 · 3 评论 -
js 变量类型
知识点变量类型变量计算变量类型值类型VS引用类型typeof运算符详解值类型Number/String/Booleanvar a = 100var b = aa = 200console.log(b) // 200引用类型Object/Array/Function 指针指向同一个内存,原因是其可以无限制扩展属性,为了防止消耗过大内存。var ...原创 2018-09-12 11:25:12 · 2148 阅读 · 0 评论 -
js 计算字符串字节长度
_getByteLen(v) { var len = 0; for (var i = 0; i < v.length; i++) { var a = v.charAt(i); if (a.match(/[^\x00-\xff]/ig) != null) { len += 2; } ...原创 2018-08-23 11:57:51 · 3115 阅读 · 1 评论 -
ES6-Promise
Promise:ES6中异步编程的解决方案ES5的异步解决方案:回调ES5-回调{ // 基本定义 let ajax = function(callback) { console.log('执行'); setTimeout(() => { callback && callback.call(...原创 2018-07-28 11:11:48 · 520 阅读 · 0 评论 -
ES6常用知识点
导出:export;引入:import引入特定模块// 导出export let A=123export function test(){ console.log('test')}export class Hello{ test(){ console.log('class') }}// 引入import {A,test,Hello...原创 2018-07-28 14:12:49 · 342 阅读 · 0 评论 -
微信小程序 Unexpected end of JSON input/Unexpected token o in JSON at position 1
原因JSON.parse无法识别某些url中的特殊字符,所以报错解决方案对需要做JSON.parse的字符串先做编码处理,encodeURIComponent(str),再用JSON.parse将其转成js对象,最后通过decodeURIComponent(str)将字符串解码即可使用。...原创 2018-08-04 17:09:25 · 3595 阅读 · 5 评论 -
js 屏蔽原生鼠标和键盘事件
屏蔽键盘事件原理:给触发按键的事件做判断,当按下的keyCode为指定keyCode时,使此次按键事件失效。特定事件屏蔽键盘事件:// html<input type="text" onkeydown="keydown()">// jsfunction keydown(){ console.log(window.event.keyCode) i...原创 2018-07-12 11:48:48 · 4846 阅读 · 1 评论 -
js 判断各种数据类型
了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx)如下实例:typeof 2 输出 numbertypeof null 输出 objecttypeof {} 输出 objecttypeof [] 输出 objecttypeof (f...转载 2018-03-03 19:45:13 · 230 阅读 · 0 评论 -
js 数组去重
1、双层循环双层循环,外层循环元素,内层循环时比较值如果有相同的值则跳过,不相同则push进数组Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1...转载 2018-06-14 10:28:44 · 1546 阅读 · 0 评论