var函数

纯函数

China☆狼群 提交于 2020-01-25 04:30:03
纯函数 什么是纯函数呢,我是在研究函数式编程时候发现的一个东西,想要知道什么是函数式编程,纯函数就是他学习的第一步。 那么就带着大家来分享一下什么是纯函数。 1-纯函数的概念 纯函数也是函数,只是相对普通的函数稍微特别了一点,概念如下: 纯函数是对相同输入返回相同输出的函数,不依赖(包含)任何外部变量,所以也不会产生改变外部环境变量的副作用。 1.1重点 通过上述概念分析得到他的重点主要集中在下面两条 1.函数的返回结果只依赖于它的参数 2.函数执行过程中没有副作用 1.2函数的返回结果只依赖于它的参数 首先第一条注意的地方。这里给大家上一段熟悉的代码,我们在js基础的课程中使用过一个求1-100的累加和,代码如下: var start = 1 ; var end = 2 ; var sum = 0 ; function fnsum ( a , b ) { for ( var i = a ; i <= b ; i ++ ) { sum += i } return sum } sum = fnsum ( start , end ) // 这里返回的值就是1-100之间的和。 这个代码看上去没什么问题,但是只能运行一次。当我们第一次运行的时候,使用到了一个全局变量sum来记录当前循环的总和,确实能够正常输出结果,但是当我们第二次运行的时候,这个sum并不是初始值0,而是5500

JavaScript之数组对象

冷暖自知 提交于 2020-01-25 01:52:12
Array类型是ECMAScript中最常用的类型了。 一、 声明方式 1.使用Array构造函数 var arr1 = new Array(); 如果预先知道要保存数组的数量, 也可以给构造函数传递该数量,该数量会自动变成length属性值。 var str = new Array(10); console.log(str.length) // 10 也可以向数组中传递包含的值。 var arr = new Array('hello', 'world', 'js'); console.log(arr); // ['hello', 'world', 'js'] 在使用Array的时候也可以省略new操作符。 var str = Array(3); console.log(str.length); // 3 2. 数组字面量表示法 var name = ['mike', 'john', 'kaer']; 注释:不要想这样声明数组, var arr = [1, 2, ]; , 在IE8及之前的版本中, arr会成为一个包含3个项且每项值为1,2,undefined的数组。而在其他浏览器中会包含项目值分别为1,2的数组。 设置和获取数组的值都可以通过索引的方式。 二、length属性 数组的length属性不只是只读的,可以通过设置这个属性,从末尾移除或向数组中添加新项。 var

原生javascript封装动画库

一个人想着一个人 提交于 2020-01-25 00:17:53
****转载自自己发表于牛人部落专栏的文章**** 一、前言 本文记录了自己利用原生javascript构建自己的动画库的过程,在不断改进的过程中,实现以下动画效果: 针对同一个dom元素上相继发生的动画,针对以下功能,尝试实现方案,(从一个元素向多个元素的拓展并不难,这里不做深入探究): 功能1.知道动画A和动画B的发生顺序(如A先发生,B后发生),能够按照代码撰写顺序实现动画A结束时,动画B调用 功能2.在满足功能1的基础上更进一步,当不知道动画A和动画B的发生顺序(如点击按钮1触发动画A,点击按钮2触发动画B,哪个按钮先点击不确定),能够达到1)两个动画不产生并发干扰;2)可以根据按钮的先后点击顺序,一个动画结束后另一个动画运行,即实现动画序列,以及动画的链式调用。 整个代码实现的过程,是不断改进的过程,包括: 1.利用requestAnimationFrame替代setTimeout来实现动画的平滑效果。 关于requestAnimationFrame的更多资料可参考这篇博客:http://www.zhangxinxu.com/wordpress/2013/09/css3-animation-requestanimationframe-tween-%E5%8A%A8%E7%94%BB%E7%AE%97%E6%B3%95/ 2.尝试引入promise

[JS] 第十课:数组

依然范特西╮ 提交于 2020-01-24 21:00:53
1. 数组的创建 通过构造函数创建数组 var array = new Array ( ) ; //------>创建一个空数组 var array = new Array ( 2 ) ; //------>创建一个长度为2的数组 var array = new Array ( 1 , 2 , 3 ) ; //------>创建一个为[1,2,3]的数组 使用数组字面量创建数组 var array = [ ] ; var array = [ 1 , 2 , 3 ] ; ⚠️ 一个数组里的元素可以是不同类型。 2. 数组构造函数上的方法 Array.isArray(arg) 功能:检测传入的参数是否为数组 返回值:布尔值 Array . isArray ( [ ] ) ; //true Array . isArray ( { name : "Tom" } ) ; //false Array.from(itms[,mapfn[,thisarg]]) 功能:从类似于数组的非数组元素或可迭代对象创建一个数组 参数: -itms:想要转化为数组的为数组对象或可叠戴对象 -mapfn:回调函数,新数组中的每个元素会执行,数组中的元素变为执行后的返回值,可选。(该函数包含两个参数: item –数组中当前正在处理的元素; index –正在处理的当前元素的索引) -thisarg

JS 数组循环遍历方法的对比

时光总嘲笑我的痴心妄想 提交于 2020-01-24 08:18:42
以下介绍比较简单,最好把代码复制到控制台敲一遍 原生for var arr = [1,2,4,6] for(var i = 0, len = arr.length; i < len; i++){ console.log(arr[i]) } forEach 语句 var arr = [1,5,8,9] arr.forEach(function(item) { console.log(item); }) for-in 语句 一般会使用for-in来遍历对象的属性的,不过属性需要 enumerable,才能被读取到. (关于enumerable,参见我的另一篇博客 defineproperty ) var obj = { name: 'test', color: 'red', day: 'sunday', number: 5 } for (var key in obj) { console.log(obj[key]) } for-of 语句 (ES 6) for-of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环 var arr = [{name:'bb'},5,'test'] for (item of arr) { console.log(item) } map 方法 (不改变原数组) map

Openlayers6 Examples学习笔记(2)

若如初见. 提交于 2020-01-24 02:57:39
文章目录 Tiled ArcGIS MapServer Canvas Tiles(地图网格) Draw and Modify Features Dynamic Data Earthquakes with custom symbols Draw Shapes(绘制不同形状的几何图形) Tiled ArcGIS MapServer 笔记: 加载ArcGIS Server发布的瓦片服务 import 'ol/ol.css' ; import Map from 'ol/Map' ; import View from 'ol/View' ; import TileLayer from 'ol/layer/Tile' ; import { OSM , TileArcGISRest } from 'ol/source' ; var url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/' + 'Specialty/ESRI_StateCityHighway_USA/MapServer' ; var layers = [ new TileLayer ( { source : new OSM ( ) } ) , new TileLayer ( { extent : [ - 13884991 , 2870341 , -

前端基础JavaScript

孤街醉人 提交于 2020-01-23 23:05:03
JavaScript引入方式 <script> // 在这里写你的JS代码 </script> <script src="myscript.js"></script> 引入额外的JS文件 JavaScript 注释 // 这是单行注释 /* 这是 多行注释 */ 结束符   JavaScript中的语句要以分号(;)为结束符。 JavaScript变量声明   1. JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。   2. 声明变量使用 var 或 let变量名; 的格式来进行声明   var :全局 let:局部作用域 var name = "Alex"; var age = 18;   变量名是区分大小写的。 推荐使用驼峰式命名规则。 JavaScript数据类型 JavaScript拥有动态类型 var x; // 此时x是undefined var x = 1; // 此时x是数字 var x = "Alex" // 此时x是字符串 数值 JavaScript不区分整型和浮点型,就只有一种数字类型 var a = 12.34; var b = 20; var c = 123e5; // 12300000 var d = 123e-5; // 0.00123 还有一种NaN,表示不是一个数字(Not a Number)。 parseInt(

web前端入门到实战:JS基础-语法+流程控制语句+函数+内置对象【数组】

喜你入骨 提交于 2020-01-23 19:19:05
JS语法: Javascript基本数据类型:undefined/null/Boolean/number/string 复杂数据类型:object typeof用来检测变量的数据类型 typeof的使用方法有两种: (1)typeof 变量 (2) typeof(变量) undefined派生自null,所以undefined==null返回的结果是true 用于任何数据类型,Number()可以将非数值转化为数值,但是有一些数据是不能转化为数值的,如果这类数据通过Number()进行强制转化的话,会返回NaN var a=Number(name_01); 用于把字符串转换为数值 var b=parseInt("28px") var d=parseFloat("12.34.56px"); 不知道值是不是null或者undefined,可以使用String(),可以将任何类型的值转为字符串 var idstr=ids.toString(); console.log(String(m)); 在运算中,除了加法,其余的运算都会将字符串先转换为数字之后再进行计算,但是两个数据相加,如果有一方是字符串的话,加号的作用就是将他们进行拼接 如: 数字5和字符串"5"进行加减乘除运算,结果分别是:55 0 25 1 &&逻辑与: 如果第一个操作数隐式转换后为true,则返回第二个操作数;

封装函数--->切换,添加,删除class

故事扮演 提交于 2020-01-23 05:07:39
var obj={}; obj.className='a b c d active';     //切换class function toggle(obj,className) { var str=obj.className; var arr=str.split(" "); var onOff=true; for (var i = 0; i < arr.length; i++) { if(arr[i]===className){ onOff=false; arr.splice(i,1); i--; } } if (onOff) { arr.push(className); } obj.className=arr.join(" "); return obj; }      //添加class function addClass(obj,className) { var str=obj.className; var arr=str.split(" "); for (var i = 0; i < arr.length; i++) { if(arr[i]===className){ return obj; } } arr.push(className); obj.className=arr.join(" "); return obj; }      //删除class  function

作用域和预解析

瘦欲@ 提交于 2020-01-22 20:33:30
// 作用域: // 域:空间、范围、区域…… // 作用:读、写 script 全局变量、全局函数 自上而下 函数 由里到外 {} 浏览器: “JS解析器” 1)“找一些东西” :var function 参数 a = ... 所有的变量,在正式运行代码之前,都提前赋了一个值:未定义 fn1 = function fn1(){ alert(2); } 所有的函数,在正式运行代码之前,都是整个函数块 JS 的预解析 遇到重名的:只留一个 变量和函数重名了,就只留下函数 2)逐行解读代码: 表达式:= + - * / % ++ -- ! 参数…… 表达式可以修改预解析的值! alert(a); // function a (){ alert(4); } var a = 1; alert(a); // 1 function a (){ alert(2); } alert(a); // 1 var a = 3; alert(a); // 3 function a (){ alert(4); } alert(a); // 3 alert( typeof a ); // a(); // 报错 */ /* var a = 1; function fn1(){ alert(a); // undefined var a = 2; } fn1(); alert(a); // 1 var a = 1;