javaScript
文章平均质量分 67
wflynn
研究代码中...将随缘更新
展开
-
0.1 + 0.2 === 0.3为什么是false,如何解决
看如下代码,最后执行的结果为 false,但在数学角度来说,他们应该是相等的console.log(0.1 + 0.2 === 0.3); // false为什么会出现上述的问题我们在浏览器上执行会发现 0.1 + 0.2 是等于 0.30000000000000004问题的原因在于,二进制浮点数中的 0.1 和 0.2 并不是十分精确,它们相加的结果并非刚好等于0.3,而是一个比较接近的数字 0.300000000原创 2022-05-27 06:51:35 · 3498 阅读 · 0 评论 -
js的this指向
this指向详解原创 2020-04-19 11:18:23 · 18495 阅读 · 1 评论 -
echarts双y轴对齐
var colors = [’#5470C6’, ‘#91CC75’, ‘#EE6666’];option = {color: colors,tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }},legend: { data: ['蒸发量', '降水量', '平均温度']},xAxis: [ { type: 'category',原创 2021-08-04 14:09:14 · 1470 阅读 · 0 评论 -
js判断当前手机是安卓还是IOS
是否是IOSisIos() { var ua = navigator.userAgent.toLocaleLowerCase() var u = navigator.userAgent var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端 return isIOS},是否是安卓isAndroid() { var ua = navigator.userAgent.toLo.原创 2020-05-27 09:25:38 · 2047 阅读 · 0 评论 -
操作URL的黑科技
处理URL的query的接口:URLSearchParams// 处理URL的query的接口:URLSearchParams// 简单使用let url = '?wd=胡歌&love=fx&year=2020';let searchParams = new URLSearchParams(url);for (let p of searchParams) { console.log(p);}// ["wd", "胡歌"]// ["love", "fx"]/...原创 2020-07-02 08:38:04 · 201 阅读 · 0 评论 -
动态加载js的异步与同步方法
同步加载(会阻塞后续代码执行)loadAsyncScript(src, callback = function () {}) { // 同步加载js const head = document.getElementsByTagName('head')[0]; const script = document.createElement('script'); ...原创 2020-03-31 09:08:23 · 1390 阅读 · 1 评论 -
class的继承
类的继承class ZxxSubFn extends ZxxFn { constructor (name, age, salary) { super(name, age); // 调用父类的构造方法 this.salary = salary } // 父类的方法重写 showName () { console.l...原创 2019-12-09 15:15:02 · 144 阅读 · 0 评论 -
箭头函数
基本用法ES6 允许使用“箭头”(=>)定义函数。var f = v => v;// 等同于var f = function (v) { return v;};如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。var f = () => 5;// 等同于var f = function () { return 5 };v...原创 2019-12-16 15:24:55 · 431 阅读 · 0 评论 -
移动端项目设配UI设计图方法
由于要使用UI的设计图,所以需要根据UI设定的尺寸来写页面下面是移动端适配的方法在script标签中执行<script> (function (doc, win) { var docEl = doc.documentElement, isIOS = navigator.userAgent.match(...原创 2020-04-14 09:19:52 · 782 阅读 · 0 评论 -
while循环详解
while语句可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。原创 2019-12-18 17:28:04 · 386 阅读 · 0 评论 -
JavaScript 里分号是必须的吗?
有时由于 JavaScript 的分号自动插入机制,解释器会在多数语句后放置分号。这就意味着在大多数情况下分号可以被忽略然而,有些情况分号是必须的。在块的开始不需要加分号,但是如果它们遵循在一行并且:行的开始是[const previousLine = 3;[1, 2, previousLine].map(n => n * 2)行的开始是(const previou...原创 2019-12-26 17:07:56 · 1234 阅读 · 0 评论 -
节流
节流的原理很简单:如果你持续触发事件,每隔一段时间,只执行一次事件。根据首次是否执行以及结束后是否执行,效果有所不同,实现的方式也有所不同。我们用 leading 代表首次是否执行,trailing 代表结束后是否再执行一次。关于节流的实现,有两种主流的实现方式,一种是使用时间戳,一种是设置定时器。第一种方法:使用时间戳,当触发事件的时候,我们取出当前的时间戳,然后减去之前的时间...原创 2019-12-30 16:45:37 · 476 阅读 · 0 评论 -
数组的find/findIndex详解
find()返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。 find方法对数组中的每一项元素执行一次callback函数,直至有一个callback 返回true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回undefined。 注意callback函数会为数组中的每个索引调用即从0到length - 1,而不仅仅是那些...原创 2019-12-05 10:21:18 · 7763 阅读 · 0 评论 -
数组的reduce()和reduceRight()方法
reduce()对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。reducer函数接收4个参数:Accumulator (acc) (累计器) Current Value (cur) (当前值) Current Index (idx) (当前索引) Source Array (src) (源数组)您的reducer函数的返...原创 2019-12-05 14:17:12 · 594 阅读 · 0 评论 -
JS 防抖 实现
在前端开发中会遇到一些频繁的事件触发,比如:window 的 resize、scroll mousedown、mousemove keyup、keydown<!DOCTYPE html><html lang="zh-cmn-Hans"><head> <meta charset="utf-8"> <meta ht...原创 2019-12-05 15:34:55 · 394 阅读 · 0 评论 -
XMLHttpRequest中的response和responseText区别
首先明白一点,xhr(XMLHttpRequest),这个对象,代表着http协议规范在客户端js中的实现。http规范,直白点说,就是http请求中的数据传输规范还有其他一些标准。无论是什么语言,什么地方的http实现,本质上,都是tcp之上的满足http规范的数据传输。在web前端,一次http请求,对应着一个xhr实例(基本的面向对象概念)。这个xhr实例上,就可以取到http协...原创 2019-11-01 10:18:01 · 5954 阅读 · 0 评论 -
XMLHttpRequest详解
XMLHttpRequest是做什么的使用 XMLHttpRequest(XHR)对象可以与服务器交互。您可以从URL获取数据,而无需让整个的页面刷新。这允许网页在不影响用户的操作的情况下更新页面的局部内容。在 AJAX 编程中,XMLHttpRequest 被大量使用。发送一个 HTTP 请求,需要创建一个 XMLHttpRequest 对象,打开一个 URL,最后发送请求。当所有这些事务...原创 2019-11-01 10:54:10 · 3930 阅读 · 0 评论 -
什么是Promise,Promise的三种状态
什么是Promise对象:Js中进行异步编程的新的解决方案(传统的解决方案——回调函数和事件),用于表示一个异步操作的最终完成 (或失败), 及其结果值.。 语法上:promise是一个构造函数 简单来说,promise对象用来封装一个异步操作并可以获取其结果语法:new Promise(function (resolve, reject) { ... } /* e...原创 2019-09-25 10:40:45 · 18251 阅读 · 0 评论 -
web前端中双等==和三等===的区别
==,转化成同一类型后的值,看“值”是否相等。 ===,如果类型不同,其结果就是不等。 双等号==: (1)如果两个值类型相同,再进行三个等号(===)的比较 (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较: (3)如果一个是null,一个是undefined,那么相等 (4)如果一个是字符串,一个是数值,把字符串转换成数值之后...原创 2019-09-23 14:53:06 · 5678 阅读 · 0 评论 -
JavaScript常用转义字符
\' 单引号 \" 双引号 \\ 反斜杠 \n 换行\r 回车 \t tab(制表符)\b 退格符\f 换页符原创 2019-09-23 14:55:09 · 1103 阅读 · 0 评论 -
Object.getPrototypeOf(obj)
Object.getPrototypeOf(obj)返回指定对象的原型(内部[[Prototype]]属性的值)。 obj:要返回其原型的对象。 返回值:给定对象的原型。如果没有继承属性,则返回 null 。var proto = {};var obj = Object.create(proto);Object.getPrototypeOf(obj) === proto; // ...原创 2019-12-03 13:57:46 · 3016 阅读 · 0 评论 -
Object.freeze(obj) 深冻结对象
Object.freeze(obj)可以冻结一个对象。一个被冻结的对象再也不能被修改; 冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性, 不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。 冻结一个对象后该对象的原型也不能被修改。 freeze()返回和传入的参数相同的对象。 返回值:被冻结的对象。冻结对象未冻结var obj...原创 2019-12-06 12:32:24 · 309 阅读 · 0 评论 -
Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames(obj)返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。 数组中枚举属性的顺序与通过 for...in 循环(或 Object.keys)迭代该对象属性时一致。 数组中不可枚举属性的顺序未定义。示例var arr = ["a", "b", "c"];console.l...原创 2019-12-18 14:23:14 · 613 阅读 · 0 评论 -
数组的Map方法详解
map():创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。indexarraymapthisArg: 可选,执行callback函数时值被用作this返回值:一个由原数组每个元素执行回调函数的结果组成的新数组。mapcallbackcallbackundefinedcallbackdeletemapcallback因为map生成一个新数组,当你不打算使用返回的新数组却使用请用forEach或者for-of替代。原创 2019-12-05 11:10:08 · 16661 阅读 · 2 评论 -
Iterator遍历器
Iterator(遍历器)的概念JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。 这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。 遍历器(Iterator)就是这样一种机制。它是一种接口......原创 2019-12-05 10:44:23 · 1305 阅读 · 0 评论 -
JS判断数据类型
怎么判断对象类型?可以通过 Object.prototype.toString.call(xx)。这样我们就可以获得类似 [object Type] 的字符串。 instanceof 可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。封装好的函数judgeType (obj) { let class2type = {};...原创 2019-12-03 09:47:04 · 114 阅读 · 0 评论 -
JS实现二分搜索
二分查找的前提为:数组、有序。逻辑为:优先和数组的中间元素比较,如果等于中间元素,则直接返回。如果不等于则取半继续查找。非递归实现function binarySearch(arr, target){ var h = arr.length - 1, l = 0; while(l <= h){ var m = Math.floor((h...原创 2019-11-28 16:40:15 · 170 阅读 · 0 评论 -
forEach循环详解
forEach()方法对数组的每个元素执行一次给定的函数。indexarrayforEach()thisArg: 可选,当执行回调函数callback时,用作this的值。undefined。原创 2019-11-28 15:55:15 · 11214 阅读 · 0 评论 -
执行上下文详解
当执行 JS 代码时,会产生三种执行上下文全局执行上下文 函数执行上下文 eval 执行上下文每个执行上下文中都有三个重要的属性变量对象(VO),包含变量、函数声明和函数的形参,该属性只能在全局上下文中访问 作用域链(JS 采用词法作用域,也就是说变量的作用域是在定义时就决定了) thisvar a = 10function foo(i) { var b = 20}...原创 2019-11-28 15:08:27 · 447 阅读 · 0 评论 -
Event Loop详解
Event Loop先举一个列子console.log('start');setTimeout(() => { console.log('timeout');});Promise.resolve().then(() => { console.log('resolve');});console.log('end');刚开始整个脚本作为一个宏任务来执行,对于...原创 2019-11-28 14:11:40 · 554 阅读 · 2 评论 -
在考虑闭包的情况下JS变量存储在栈与堆的区分
变量存储在闭包中的问题按照常理来说栈中数据在函数执行结束后就会被销毁,那么 JavaScript 中函数闭包该如何实现,先简单来个闭包:function count () { let num = -1; return function () { num++; return num; }}let numCount = count...原创 2019-11-28 10:33:05 · 2652 阅读 · 5 评论 -
JS面试点- bind / call / apply
bind / call / apply 可用于this的显式绑定this绑定的是 call,apply,bind 的第一个参数call()方法var a = { user: 'zxx', fn: function () { console.log(this.user) // zxx }}var b = a.fnb.call(a)通过在...原创 2019-11-27 15:55:17 · 166 阅读 · 0 评论 -
将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组)
需求:多维数组=>一维数组let ary = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]1. 调用ES6中的flat方法ary = ary.flat(Infinity);flat()方法会移除数组中的空项:var arr4 = [1, 2, , 4, 5];arr4.flat();// [1, 2...原创 2019-11-27 15:37:40 · 3740 阅读 · 0 评论 -
JS判断数组中是否包含某个值
方法一:array.indexOf此方法判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1。var arr = [1, 2, 3, 4]var index = arr.indexOf(3)console.log(index)方法二:array.includes(searcElement[,fromIndex])此方法判断数组中是否存在某个值,如果存在...原创 2019-11-27 15:32:11 · 145 阅读 · 0 评论 -
arguments详解,类数组转数组方法
允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。属性和索引元素之外没有任何。:返回它所对应的原函数。非严格模式下,可以通过。,达到调用函数自身的目的。...原创 2019-11-27 15:16:09 · 389 阅读 · 0 评论 -
JS实现继承的方法
方法一:借助callfunction Parent (sex) { this.name = 'zxx' this.sex = sex}Parent.prototype.test = function () { console.log('我是函数')}Parent.prototype.why = 'not'function Child (sex) { ...原创 2019-11-27 10:26:44 · 320 阅读 · 0 评论 -
JS类型转换难点面试题
js中的类型名的强制类型转换Number(mix)、 String(mix)、 Boolean(mix)js中的类型隐式转换的条件是什么?各种运算符,包括==比较运算符,还有++,大于小于等等js中强制类型转换的两种方式是什么?类型转换函数:parseInt(string,radix)、parseFloat(string)、toString(radix)类型类的...原创 2019-11-26 16:00:30 · 618 阅读 · 0 评论 -
js类型显式隐式转换详解
JS类型转换(强制和自动的规则)显式转换通过手动进行类型转换,Javascript提供了以下转型函数:转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)转换为字符串类型:toString(radix)、String(mix)转换为布尔类型:Boolean(mix)Number(mix)函数,可以将任意类型...原创 2019-11-26 09:42:11 · 522 阅读 · 0 评论 -
Object.is方法详解、Object.is和===的区别
Object.is() 方法判断两个值是否是相同的值。表示两个参数是否相同的布尔值 。如果下列任何一项成立,则两个值相同:两个值都是 undefined 两个值都是 null 两个值都是 true 或者都是 false 两个值是由相同个数的字符按照相同的顺序组成的字符串 两个值指向同一个对象 两个值都是数字并且 都是正零 +0 都是负零 -0 都是 NaN 都是除零和 N...原创 2019-11-25 16:19:59 · 7466 阅读 · 1 评论 -
Object 的 hasOwnProperty 方法详解
hasOwnProperty(prop)返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。 prop:要检测的属性的 String 字符串形式表示的名称,或者 Symbol。 返回值:用来判断某个对象是否含有指定的属性的布尔值 Boolean。 所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含...原创 2019-11-25 16:07:29 · 3051 阅读 · 0 评论