![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS
文章平均质量分 68
yingzizizizizizzz
克制自己的懒惰
展开
-
JavaScript 复杂判断的更优雅写法
转自:https://juejin.im/post/5bdfef86e51d453bf8051bf8前提我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂,那么如何更优雅的写判断逻辑,本文带你试一下。举个例子先看一段代...转载 2019-02-25 19:54:44 · 202 阅读 · 0 评论 -
柯里化再谈
柯里化思想:柯里化其实本身是固定一个可以预期的参数,并返回一个特定的函数,处理批特定的需求。这增加了函数的适用性,但同时也降低了函数的适用范围。举个栗子:实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15刚好这个功能要实现的就是柯里化原创 2017-08-05 22:15:54 · 839 阅读 · 0 评论 -
面试题——js垃圾回收机制和引起内存泄漏的操作
JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。JS中最常见的垃圾回收方式是标记清除。工作原理:是当变量进入环境时,将这个变量标记为“进入环境”。当变量离开环境时,则将其标记为“离开环境”。标记“离开环境”的就回收内存。工作流程:1. 垃圾回收器,在运行的时候会给存储在内存中的所有变量都加上标记。2.原创 2017-08-17 15:42:12 · 27190 阅读 · 1 评论 -
详述undefined和null的区别
转自这里:http://www.jb51.net/article/48552.htm有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?一、相似性在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。复制代码代码如下:var a = undefined;v转载 2017-08-02 16:54:59 · 256 阅读 · 0 评论 -
页面元素坐标和偏移(clientX/pageX/screenX/layerX/offsetWidth/scrollWidth/clientWidth等)相关整理
转自这里:http://www.cnblogs.com/skylar/p/4121508.html 顺便补充点鼠标事件都是在特定位置发生的,我们可以通过event事件对象的各种属性来获得事件发生的坐标位置,有相对于视口的,有相对于整个文档的,同样页面元素的位置也有相对视口的,也有滚动后的,这些都比较容易混淆,所以整理在这里,备忘,待查。 1.客户区坐标位置(clientX/c转载 2017-07-31 21:38:27 · 954 阅读 · 0 评论 -
js基础知识——字符转换
==”运算符(两个操作数的类型不相同时)如果一个值是null,另一个值是undefined,则它们相等 如果一个值是数字,另一个值是字符串,先将字符串转换为数学,然后使用转换后的值进行比较。 如果其中一个值是true,则将其转换为1再进行比较。如果其中的一个值是false,则将其转换为0再进行比较。 如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,再进行比较。对象到原创 2017-07-31 16:52:32 · 267 阅读 · 0 评论 -
js数组的索引详解
摘自:http://www.jb51.net/article/70208.htm 不知道你有没有发现。在右侧,上面几个是数字索引,打印数组的时候能被打印的,而下面几个是属性,打印数组不会打印属性!也就是说,a[-2] = 2;这种语句,这个-2是属性的键,而不是特殊的数字索引的键,-2在被强制转换成正整数的时候,被认为是一个字符串,所以这个-2和42949672转载 2017-07-31 10:25:28 · 4077 阅读 · 0 评论 -
如何判断一个元素被加载完成了?
要监听元素的状态如果我要判断 img 已经加载完毕 用什么方法可以判断呢 ? 在IE下面可以用这样的方法 var oImg = document.getElementById("img"); if(oImg.readystate=="complete") { alert("图片已经加载完成"); return false; }原创 2017-06-13 15:41:47 · 16718 阅读 · 0 评论 -
兼容性问题汇总
css清除ul和ol列表缩进问题:IE7-用margin:0解决,现代浏览器用list-style:none;margin:0;padding:0解决。详情点这里IE6双边距问题:使用了float,左右会出现双倍边距。解决:display:inline。IE6无法定义1px高的容器,解决:overflow:hiddenjsIE6,7,8不支持for each in遍历原创 2017-05-23 09:57:46 · 410 阅读 · 0 评论 -
JS 数据类型转换
JS 数据类型转换 方法主要有三种转换函数、强制类型转换、利用js变量弱类型转换。1. 转换函数:js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。在判断字符串是否是数字值前,parseInt()和pars原创 2017-06-08 13:25:12 · 288 阅读 · 0 评论 -
sessionStorage 、localStorage 和 cookie 之间的区别
整理牛客网上大家的回答共同点:都是保存在浏览器端,且同源的。 区别:1:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。2:存储大小限制也原创 2017-06-07 11:16:49 · 393 阅读 · 0 评论 -
用于异步加载的defer和async详解
定义和用法alert(document.getElementById("p1").firstChild.nodeValue);defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。有的 javascript 脚本 document.write 方法来创建当前的文档内容,其他脚本就不一定是了。如果您的脚本不会改变文档的内容,可将 defer 属性加入到 标签中,以便原创 2017-06-07 10:33:21 · 522 阅读 · 0 评论 -
js延迟加载的几种方式
转自这里:http://blog.csdn.net/newborn2012/article/details/17057759网页中通常在head中包含script标签加载js文件,但有些js文件不是很重要,比如网页数据统计的js脚本,就可以在网页显示完之后再慢慢加载,这样也有利于网页的显示效率,别在加载js脚本的过程中,页面显示一片空白。实现延迟加载的方式有很多种:1,直接将scr转载 2017-06-07 10:52:33 · 779 阅读 · 0 评论 -
settimeout与闭包
转自这里……教科书里面的setTimeout定义很简单setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。广泛应用场景定时器,轮播图,动画效果,自动滚动等等上面一些应该是setTimeout在大家心中的样子,因为我们平常使用也不是很多。但是setTimeout真的有那么简单吗?测试题一个题目,如果你在一段代码中发现下面内容 va转载 2017-06-06 21:41:48 · 823 阅读 · 0 评论 -
js获取元素样式
转自这里:http://www.cnblogs.com/xiyangbaixue/archive/2014/09/30/4001531.html摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class。现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之前先说下获取最终应用在元素上的所转载 2017-08-30 20:31:57 · 294 阅读 · 0 评论 -
点击圆环颜色改变背景颜色
实现效果点击对应圆环,背景颜色编程对应颜色。涉及到的知识点1、css画圆2、三个圆在同一个圆心上3、点击对应环得到的就是对应环 用了两种方法。闭包和事件委托。 闭包是遍历li标签,访问函数外部的变量;代码量多点,但是如果是li标签中还有东西,点击其中一个就要触发li,这种用闭包比较合适。 事件委托是把事件处理加到父元素上,不用添加到多个子元素上原创 2017-08-30 20:37:31 · 792 阅读 · 0 评论 -
什么是闭包?闭包的工作原理、优缺点、使用场景和对页面的影响
参考博客:http://www.cnblogs.com/cxying93/p/6103375.html闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。1、变量作用域要理解闭包,首先要理解javascript的特殊的变量作用域。变量的作用域无非就两种:全局变量和局部变量。javascript语言的特别之处就在于:函数内部可原创 2017-06-06 20:57:46 · 17275 阅读 · 0 评论 -
axios的详细用法
axiosAxios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中特点支持浏览器和node.js 支持promise 能拦截请求和响应 能转换请求和响应数据 能取消请求 自动转换JSON数据 浏览器端支持防止CSRF(跨站请求伪造)一、安装1、 利用npm安装npm install axios --save2、 利用bower安...转载 2018-10-10 11:36:30 · 1019 阅读 · 0 评论 -
工作中遇到的JS问题
移动开发中禁止屏幕横转:https://blog.csdn.net/wu1991924/article/details/43483289https://blog.csdn.net/teddyu_leo/article/details/49081813原创 2018-08-22 15:07:55 · 337 阅读 · 0 评论 -
不可变性思想
摘抄自:https://doc.react-china.org/tutorial/tutorial.html不可变性思想的重要性改变应用数据的方式一般分为两种。第一种是直接修改已有的变量的值。第二种则是将已有的变量替换为一个新的变量。直接修改数据var player = {score: 1, name: 'Jeff'};player.score = 2;// Now play...原创 2018-08-09 21:06:16 · 260 阅读 · 0 评论 -
js检测页面上一个元素是否已经滚动到了屏幕的可视区域内
应用场景:只要页面加载了,其中在页面中出现的li就向控制台输出第几个发送请求;在本次加载的页面中,再将滚动条滚回前边的li,不再向控制台输出东西,也就是说已经显示过的li,不再向控制台输出东西。<body><ul><li onclick="jumpOther()">0001</li><li>0002</li>原创 2018-07-25 16:47:23 · 17431 阅读 · 0 评论 -
js监听滚动条滚动到底部
$(document).ready(function () { window.addEventListener("scroll",function(e){ if (($(document).scrollTop()) >= ($(document).height() - $(window).height())) { //当底部基本距离+滚动的高...原创 2018-07-24 20:27:15 · 4640 阅读 · 0 评论 -
AJAX跨域解决方案
1.为什么会出现跨域无法访问的情况? 跨域是指不同域名之间的相互访问。当要在在页面中使用js获取其他网站的数据时,就会产生跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时以及hybrid app中请求数据,浏览器就会提示以下错误。跨域是由浏览器的同源策略造成的(下面解释同源策略)。2.什么是同源策略? 同源策略是浏览器的一种安原创 2017-04-19 22:28:45 · 375 阅读 · 0 评论 -
js操作对象中点操作和中括号操作的区别
我们都知道,取js对象的时候可以用.也可以用[]。但是区别之前不是很清楚,今天在网上搜罗了,现总结如下:中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。中括号运算符可以用纯数字为属性名。点运算符不能。中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。可原创 2017-10-24 11:22:14 · 2581 阅读 · 0 评论 -
前端好文章
前端问题web前端知识体系前端工程的四个阶段 帮我走出迷雾的文章自动化构建什么是前端自动化构建浅谈自动化构建工具前后端同构js问题js五种基本类型从onload和DOMContentLoad谈起caller返回一个对函数的引用,该函数调用了当前函数。callee返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文...原创 2017-05-23 10:58:07 · 584 阅读 · 0 评论 -
面试题总结
1、写一个闭包的实现2、如何让将js闭包内部局部变量全部删除?var foo = (function() { var n = 0; return { add: function () { return ++n; }, clearVariable: function () { n原创 2017-09-16 22:27:19 · 247 阅读 · 0 评论 -
js 数组去重的五种方法
// 去掉一个数组的重复元素,并返回的是新数组(这个有问题。这个的length会变,因此是错误的) function quChong(arr){ var newArr=arr; var temp={}; for(var i=0;i<=newArr.length;i++){ if(temp[newArr[i]]){ newArr.spl原创 2017-09-18 23:30:57 · 724 阅读 · 0 评论 -
整理的JS编程题
//判断一个字符串中出现次数最多的字符,统计这个次数 function findMax(str){ var temp={}; for(var i=0;i<str.length;i++){ var key=str.charAt(i); if(!temp[key]){ temp[key]=1; }else{ t原创 2017-09-02 14:23:46 · 534 阅读 · 0 评论 -
JS利用参数个数实现重载
利用参数的个数实现重载,马上想到的方法就是function(){ switch(arguments.length){ case 0: console.log("一个朋友都没有"); break; case 1: console.log("有一个朋友"); break; case 2: console.log("有两原创 2017-09-01 11:08:52 · 446 阅读 · 0 评论 -
整理的闭包问题
给大家整理了下闭包的相关问题,能帮助加深对闭包的理解。问题一:function f1(){ var n=999; nAdd=function(){n+=1} function f2(){ alert(n); } return f2; } var result=f1(); result(); // 999 nAdd();原创 2017-08-30 22:40:18 · 1599 阅读 · 2 评论 -
js函数调用的四种方式
转自这里……在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用。函数有四种调用模式,分别是:函数调用形式、方法调用形式、构造器形式、以及apply形式。这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式。本文主要内容:1.分析函数的四种调用形式转载 2017-06-06 21:17:23 · 6947 阅读 · 0 评论 -
JavaScript值类型和引用类型
JavaScript值类型和引用类型有哪些 (1)值类型:数值、布尔值、null、undefined。 (2)引用类型:对象、数组、函数。 如何理解值类型和引用类型及举例 我们可以用“连锁店”和“连锁店钥匙”来理解,不知道以下比喻合不合适,^-^。 (1)值类型理解:变量的交换等于在一个新的地方按照连锁店的规范标准(统一店面理解为相同的变量内容)新开一个分店转载 2017-06-01 16:49:41 · 356 阅读 · 0 评论 -
js实现继承的几种方法
ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的。原型链原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的指针。如果:我们让原型对象A等于另一个类型B的实例,那么原型对象A就会有一个指针指向B的原型对象,相应的B的原型对象中保存着指向其构造函数转载 2017-06-01 16:51:49 · 356 阅读 · 0 评论 -
ECMAScript6学习笔记——promise对象
1.什么是Promise对象?有什么用处?所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。2.Promise对象的两个特点对象的状态不受外界影响。Promis原创 2017-04-05 14:53:29 · 683 阅读 · 0 评论 -
ECMAScript6知识扫盲
点击打开链接,转自小胡子哥的博客1. let、const 和 block 作用域let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var:var a = 2;{ let a = 3; console.log(a); // 3}console.log(a); // 2运行代码同样在块级作用域有效的另一个变量声明方式是 co转载 2017-04-03 22:56:26 · 704 阅读 · 0 评论 -
ECMAScript6学习笔记——块级作用域
ES5没有块级作用域的弊端:ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。例如:var s = 'hello';for (var i = 0; i < s.length; i++) { console.log(s[i]);}console.log(i); // 5上面代码中,变量i只用来控制循环,但是循环结束后,它并没有消失,泄露成了全局原创 2017-04-03 22:20:03 · 595 阅读 · 0 评论 -
ECMAScript6学习笔记——let和const命令
let命令 let命令,用来声明变量所声明的变量,只在let命令所在的代码块内有效。不存在变量提升,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。暂时性死区 ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只原创 2017-04-03 22:05:00 · 598 阅读 · 0 评论 -
详解js中的apply与call的用法
转自这里………………前言call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。call 和 apply二者的作用完全一样,只是接受参数的方式不太一样。方法定义applyFunction.apply(obj,args)方法能接收两个参数:obj:这个对象将代替Function类转载 2017-04-02 16:39:03 · 657 阅读 · 0 评论 -
ECMAScript6学习笔记——generator函数
1.基本概念Generator 函数Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是“产出”)。function* helloWorldGene原创 2017-04-10 12:06:54 · 601 阅读 · 0 评论 -
JSON与XML
什么是 JSON ?JSON 指的是 JavaScript 对象表示法(JavaScriptObject Notation)JSON 是轻量级的文本数据交换格式JSON 独立于语言 *JSON 具有自我描述性,更易理解* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言原创 2017-04-09 22:17:56 · 235 阅读 · 0 评论