当前位置: 首页 > news >正文

wordpress 导入网站百度百度一下百度

wordpress 导入网站,百度百度一下百度,最好的网站建设系统,网站建设图片如何循环转不知道大家有没有一种感觉#xff0c;那就是自己写的javascript代码虽然能完全解决工作上的需要#xff0c;但是#xff0c;一眼望去#xff0c;too simple#xff01;#xff01;#xff01;简直就是一个傻子都能看懂的水平#xff0c;于是#xff0c;在工作之余那就是自己写的javascript代码虽然能完全解决工作上的需要但是一眼望去too simple简直就是一个傻子都能看懂的水平于是在工作之余我开始去收集一些几乎在日常开发中未曾用过的javascript写法/有价值的javascript知识点借此来提高自身javascript水平。 一、函数式编程与面向对象编程 script/*函数式编程*/function f1(){var n999;nAddfunction(){n1;};var f2 function(){console.log(n);};return f2;}var resultf1();result(); // 999nAdd();result(); // 1000/*面向对象编程1之json写法*/var obj1 {n:999,nAdd:function(){this.n 1;},getN:function(){console.log(this.n);}};obj1.getN();//999obj1.nAdd();obj1.getN();//1000/*面向对象编程2之工厂模式*/var obj2 function(){var obj new Object;obj.n 999;obj.nAdd function(){this.n 1;};obj.getN function(){console.log(this.n);}return obj;};var objins new obj2();objins.getN();//999objins.nAdd();objins.getN();//1000/*面向对象编程3之原型prototype*/function obj3(n) {this.n n;}obj3.prototype.nAdd function() {this.n1;};obj3.prototype.getN function() {console.log(this.n);}var objins2 new obj3(999);objins2.getN();//999objins2.nAdd();objins2.getN();//1000 /script View Code 针对上面所示的函数式编程涉及了作用域和闭包的知识这里简要提一下 里面的nAdd没有用var关键字声明所以他是全局的后面可以全局调用其次利用闭包访问和修改了函数作用域内的n值。 二、纯函数和非纯函数 1.此函数在相同的输入值时总是产生相同的输出。函数的输出和当前运行环境的上下文状态无关。 2.此函数运行过程不影响运行环境也就是无副作用如触发事件、发起http请求、打印/log等。 简单来说也就是当一个函数的输出不受外部环境影响同时也不影响外部环境时该函数就是纯函数也就是它只关注逻辑运算和数学运算同一个输入总得到同一个输出。 var xs [1,2,3,4,5]; // 纯的 xs.slice(0,3); // [1,2,3] xs.slice(0,3); // [1,2,3] xs.slice(0,3); // [1,2,3]// 不纯的 xs.splice(0,3); // [1,2,3] xs.splice(0,3); // [4,5] xs.splice(0,3); // [] View Code 纯函数相对于非纯函数来说在可缓存性、可移植性、可测试性以及并行计算方面都有着巨大的优势。 三、函数的柯里化 curry 的概念很简单将一个低阶函数转换为高阶函数的过程就叫柯里化。 函数柯里化是一种“预加载”函数的能力通过传递一到两个参数调用函数就能得到一个记住了这些参数的新函数。从某种意义上来讲这是一种对参数的缓存是一种非常高效的编写函数的方法 /*一般写法两数相加*/var add function(x,y){return x y;}/*21和210*/add(2,1);//3add(2,10);//12/*柯里化写法*///es5var add function(x) {return function(y) {return x y;};};//es6var add x (y x y);//定义1和10函数var increment add(1);//柯里化后得到的1函数var addTen add(10);//柯里化后得到的10函数increment(2); // 3addTen(2); // 12 View Code 四、Array.reduce/Array.reduceRight数组迭代 先不看标题来个题目如何求数组[1,2,3,4,5]的各项累加的和 大多数人恐怕会立即说出for循环、while循环的确for循环和while循环是可以解决上述问题但是这个答案显然脱离了此篇博客的主题逼格 并且实验表明将上述求和方法循环1W次用for循环和while循环耗时大概在50~55ms但是用Array.reduce/Array.reduceRight仅仅耗时0.4ms 关于该方法的详解请猛戳→https://www.w3cplus.com/javascript/array-part-8.html这里给个demo var arr [1,2,3,4,5];/*ES6写法*/var reducer (prevalue,curvalue)prevalue curvalue;console.log(arr.reduce(reducer));//15/*ES5写法*/var reducer function(prevalue,curvalue){return prevalue curvalue;};console.log(arr.reduce(reducer));//15/*解析*/数组的reduce方法有两个参数callbackprevalue对于第一个参数callback里面有4个参数prevalue、curvalue、index、arrayindex是当前迭代时的curvalue的索引数组中的索引array当然是操作的数组了着重看另外两个参数prevalue和curvalue上一个值和当前值如果reduce方法没有第二个参数的话那么callback回调将数组第一个值作为prevalue第二个值作为curvalue如果reduce方法有第二个参数那么将第二个参数值作为prevalue将数组第一个值作为curvalue每一次的操作结果将变为下一次操作的prevalue而curvalue的值教上一次往后推一位/*实例解析*/针对上述数组相加没有第二个参数只有一个回调callback那么他的过程是这样的第一次运算prevalue为1curvalue为2运算结果为123并将结果作为下次运算的prevalue第二次运算prevalue为3上一次运算的结果curvalue为3,运算结果为334以此类推如果有第二个参数假设为5arr.reduce(reducer5)那么将是这么计算的第一次运算prevalue为5第二个参数curvalue为1运算结果为516并将结果作为下次运算的prevalue第二次运算prevalue为6上一次运算的结果curvalue为2,运算结果为628以此类推reduceRight和reduce类似只不过他是从右边开始迭代的。 View Code  五、函数组合reduce高级用法 假想一下要将字符串“my name is echo”进行如下操作你会怎么做转大写、然后末尾加一个感叹号 我想你大概会定义一个函数operate对于形参str先toUpperCase()然后 !ok这样做没错但是现在我需求改了我不要求转大写了你是不是得删除那行代码 可能你会说了我定义两个函数一个是转大写一个是加叹号需要哪个用哪个其实无论你用几个函数来写还是直接用prototype或者链式调用的方法去写都只是大众化的写法且不易维护so请看下面的写法 var compose (...args) x args.reduceRight((prevalue, curvalue) curvalue(prevalue), x);var toUpperCase x x.toUpperCase();var exclaim x x !;var shout compose(exclaim, toUpperCase);console.log(shout(my name is echo)); View Code  一眼望去是不是两眼懵逼不怕我们用ES5还原一下请看 var compose function (...args){return function (x){return args.reduceRight(function(prevalue, curvalue){return curvalue(prevalue);},x)}};var toUpperCase function(x){return x.toUpperCase();};var exclaim function(x){return x !;};var shout compose(exclaim, toUpperCase);console.log(shout(my name is echo)); View Code 结合上述第四例所讲到的reduce我希望此时你已经看懂了没看懂也没关系接着往下看继续解析 var shout compose(exclaim, toUpperCase) function (x) {return [exclaim, toUpperCase].reduceRight(function(prevalue, curvalue){return curvalue(prevalue);},x)};shout(my name is echo) [exclaim, toUpperCase].reduceRight(function(prevalue, curvalue){return curvalue(prevalue);},my name is echo);/*前面说过如果reduce/reduceRight传了第二个参数那么该第二个参数将作为prevalue给callback调用。*//*运算过程如下reduceRight从右往左curvalue(prevalue)*/1.toUpperCase(my name is echo);并将结果作为prevalue供下次调用2.exclaim(toUpperCase(my name is echo));如此实现了先转大写再加感叹号。 View Code  转载于:https://www.cnblogs.com/eco-just/p/10328522.html
http://www.pierceye.com/news/916317/

相关文章:

  • 网站分析与优化百度新闻源网站有哪些
  • 直播网站开发秀色上海综合新闻
  • 电子商务网站建设与管理课后题答案企业网站推广哪家好
  • 网站被挂黑链怎么删除石家庄企业网站建设
  • 网站模板怎么连接域名可视化网页设计在线
  • 美术馆网站建设要求开发软件多少钱一个月
  • 直播网站开发核心技术wordpress访问次数插件
  • wap网站 劣势微信小程序怎么写
  • 商业网站开发与设计网站seo是什么意思
  • 内蒙古住房和城乡建设网站做网站的人怎么上传内容的
  • 视频网站视频预览怎么做的美丽说网站案例分析
  • 宝安多屏网站建设公司好吗网站启用cdn加速
  • 上海网站制作方法网站页面设计报价
  • 介绍自己做的网站的论文网站模块建设中
  • 诸城手机网站建设微官网怎么制作
  • 做网站界面的软件网站开发售后服务
  • 织梦可以做英文网站吗成交型网站建设公司
  • 长沙招聘网站制作广告设计公司需要用专线网吗
  • 一级做爰A视频免费网站国内疫苗接种率
  • 绍兴网站公司网站制作163邮箱登录页面
  • 阐述电子商务网站的建设要求网站开发总结性报告
  • html与wordpressaso优化方法
  • 众v创业营网站开发营销活动方案策划
  • 什么网站免费做推广抚州北京网站建设
  • 响应式网站 软件做网站下载那个数据库好
  • 网站loading动画效果微信开放平台介绍
  • 山东网站建设报价网页制作与网站建设答案
  • 佛山网站搭建费用淄博刚刚发布紧急通知
  • 建站教程视频下载视频直播软件开发
  • 后缀cc的网站php网站开发实例教程代码百度云