Conor.Jin's blog

分类 · 原生JS

首页

关于

归档

JS闭包的理解

一、前提JS作用域分为全局作用域以及局部作用域。局部作用域内部可以访问全局作用域的变量,而局部作用域外面无法访问局部作用域的变量。这个根本原因在于JS的作用域是以作用域链的形式存在,子作用域可以访问父作用域的数据,而父作用域不可以访问子作用域的数据,全局作用域是作为最上级的父作用域,所以采用以上的情况。 二、闭包所以我理解的闭包就是——闭包是指一个可以访问另外一个函数作用域中的变量的函数(定义在函数内部的函数)。 或者说闭包打破了JS的作用域链的模式。   三、 用处用来保存一个需要持久保存的变量(封装JS插件)。   网络上关于闭包的解释和函数有很多,这里只是简单的说明我的理解情况。

更多

轮播图实现原理

轮播图可以说是最平常最基础不过的东西了,不论是web还是App方面,我本人也是拿来主义,是时候改变了,水平有限,总结出两种方案。 PS: 方案都很简陋,没有左右键切换,也没有下面表示进行的小圆点,只记录原理。 一.  通过display 控制 所谓轮播图就是将要展示的图片做好队列,但是窗口有限,一次只能展示一个图片,那么如果说通过display 设置 当前要展示的图片为 “block”,其他不展示的图片为 “none”,应该就解决这个问题了。 HTML代码: <div class="main" id="main"> <div class="banner" id="banner"> ..

更多

Js插件封装

近日总结的相对简单的JS插件封装的模板   ;(function(){  var demo = function (options) {  if(!(this instanceof demo)){return new demo(options)};  this.options = this.extend({  ‘x’: 1,  ‘y’: 2,  ‘z’: 3  },options)  //初始化  this.init();  }  demo.prototype = {  init: function () {  console.log(this..

更多

Js数组去重

Js中使用算法的时候并不多,数组去重属于非常基础的功能,下面三种属于我感觉比较有意思的。 先定义要去重的数组 var arr = [1,12,12,5,2,2,9,3,10,3,12,13,20,2,1,20,2,1] 一、排序后相邻去除法 // 先排序function sortByGradeDown(arrA, arrB) {if (arrA == arrB) {return 0} else if (arrA > arrB) {return 1} else if (arrA < arrB) {return -1}}// 再去重function duplicateRemoval(arr) {var a = []a.push(arr[0])for (let i = 0; i < arr.le..

更多