fn

Javascript

喜夏-厌秋 提交于 2019-11-30 06:55:09
Javascript Web前端有三层: HTML:从语义的角度,描述页面 结构 CSS:从审美的角度,描述 样式 (美化页面) JavaScript:从交互的角度,描述 行为 (提升用户体验) 其中JavaScript基础又分为三个部分: ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。 DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。 BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。 1.Javascript背景介绍 布兰登 • 艾奇(Brendan Eich,1961年~),1995年在网景公司,发明的JavaScript。 一开始JavaScript叫做LiveScript,但是由于当时Java这个语言特别火,所以为了傍大牌,就改名为JavaScript。 同时期还有其他的网页语言,比如VBScript、JScript等等,但是后来都被JavaScript打败了,所以现在的浏览器中,只运行一种脚本语言就是JavaScript 发展历程 2003年之前,JavaScript被认为“牛皮藓”,用来制作页面上的广告,弹窗、漂浮的广告。什么东西让人烦,什么东西就是JavaScript开发的。所以浏览器就推出了屏蔽广告功能。 2004年

闭包的简单了解

五迷三道 提交于 2019-11-30 05:42:19
<body> <ul> <li>link1</li> <li>link2</li> <li>link3</li> <li>link4</li> <li>link5</li> <li>link6</li> </ul> </body> <script> // 闭包 // function fn(){ // var a = 10; // a++; // console.log(a) // } // fn(); // fn(); // fn(); // fn(); // function fn(){ // var a = 10; // function fun(){ // a++; // console.log(a) // } // return fun; // } // var f = fn(); // f(); // f(); // f(); // 闭包:利用作用域的嵌套,将原本的局部变量,进化成自由(私有)变量的环境 // 闭包的原理: // 局部作用域,局部变量的生命周期,朝生暮死 // 利用作用域的嵌套,触发计算机的垃圾回收机制,将原本要删除的变量,暂时保存起来,可以继续使用 // 垃圾回收机制:将要删除的数据,先暂时存放在一个临时空间内,不立即删除,如果需要再次使用,可以直接找到该数据,继续使用,直到真正不用了,再被删除 // 闭包的应用: // 循环中的异步 // var

call和apply的使用

醉酒当歌 提交于 2019-11-30 01:16:50
在使用call和apply之前,我们需要先做一些知识储备: 一、window对象 window对象是js中的顶层对象,所有全局变量和全局函数都被绑定在了window对象身上,如何证明呢,我们可以先声明一个全局变量和函数,然后来观察window对象。 var a = 10; //全局变量 function abc(){ //全局函数 console.log("Young"); } console.log(window); //此时在window对象内已经出现了a属性和abc函数 那我们在定义了全局的变量a和全局的函数abc之后,为什么在使用他们时没有加上window对象的前缀呢 window.a; //10 window.abc(); //Young 这是因为window对象作为一个全局对象,一般情况下在使用的时候是可以省略的,也就是不写,如代码 a; //10 abc(); //Young 也是可以拿到a的值和执行abc函数。以上两种书写方式等价。 简单总结,window可以说是js中最大的boss,所有在明面上的人员和交易,都是属于window的,就算人员没有特别说明,每笔交易也没有单独的署名,但是window对象永远都是掌控一切。 二、this关键字,也就是所谓的执行上下文 说执行上下文可能有好多人不明白,那么我们就说this这个关键字的含义。 this关键字存在于函数中

JavaScript设计模式(5)—— 结构型设计模式【1】

天大地大妈咪最大 提交于 2019-11-30 00:27:33
原文出自于本人个人博客网站: https://www.dzyong.com (欢迎访问) 转载请注明来源: 邓占勇的个人博客 - 《JavaScript设计模式(5)—— 结构型设计模式【1】 》 本文链接地址: https://www.dzyong.com/#/ViewArticle/90 设计模式系列博客: JavaScript设计模式系列目录(持续更新中) 结构型设计模式关注于如何将类或对象组合成更大、更复杂的结构,以简化设计。 结构型设计模式共7种,分为两次来进行介绍。本次介绍其中的 外观模式 、 适配器模式 、 代理模式 和 装饰者模式 。 外观模式 为一组复杂的子系统接口提供一个更高级的同一接口,通过这个接口使得对子系统接口的访问更容易。在JavaScript中有时也会对底层结构兼容性做出同一封装来简化用户使用。 例子:为document绑定一个click事件来实现隐藏提升抗的交互功能。 传统写法: document.onclick = function(e){ e.preventDefault() if(e.target != document.getElementById('myinput')) hidePageAlert() } function hidePageAlert(){} 这样的写法存在两个问题,第一

async、await

☆樱花仙子☆ 提交于 2019-11-29 19:41:25
async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案。目前,async / await这个特性已经是 stage 3 的建议。 (1)Promise、generator、yield是ES6中的异步解决方案,使用Promise之后,可以很好的减少嵌套的层数。 function fn(p) { return new Promise((resolve, reject) => { console.log(p); setTimeout(() => { console.log('test:',p); resolve(); }, 2000); }); } function handlePromise() { fn("aaa") .then(() => { return fn("bbb"); }) .then(() => { return fn("ccc"); }) .catch(reason => console.log(`catch reason: ${reason}`)); } 执行:handlePromise() Promise仍然存在缺陷,它只是减少了嵌套,并不能完全消除嵌套。对于多个promise串行执行的情况,第一个promise的逻辑执行完之后,我们需要在它的then函数里面去执行第二个promise,这个时候会产生一层嵌套。另外

联想笔记本Flex2-14 按住Fn轻按F2进入BIOS

对着背影说爱祢 提交于 2019-11-29 19:38:37
某一天,我觉得电脑实在是慢的让我心烦意乱。然后我就想重装系统了,把win7换成win10吧,应该会快点吧,我是这样想的。于是故事便开始了。 U盘启动就不说了,我重启电脑按Esc键愉快的选择了U盘启动,然后选择了win10 的系统装在C盘。装系统电脑自己会重启就不说了哈。好巧不巧,在重启后win10有个初始化设置的过程(就是选择时区,要不要输入密匙什么的),设置完成之后按照我想象的剧情应该是顺利进入系统界面。然而我好像不是编剧呢,就是转了很久的圈圈之后它又回到了基础设置的最开始的样子(选择时区还是国家的那个梦开始的地方)。阿勒!剧情怎么会这样发展,这个状态好像也关不了机,只是会自己重启。于是我尝试在重启的时候按Esc选引导盘,很明显的被无视了,F8也不行(好像是因为win10 默认开机快速启动,所以win7的方法似乎不管用了)。 在很久之后我知道了用Fn+F2可以在重启的时候进入BIOS。这个时候我觉得可能我下了一个假系统,虽然在MSDN上下载的,但是时间有点久不太记得清了。所以我又想换一个系统试试,开始是安装的专业版,好在我还有一个企业版可以做一下实验。然而结果还是一样的。当然我还是尝试了很多方法。最后还是装了个win7,装win10不成功的原因应该是磁盘有些乱需要重新分区,但是东西有一小点多所以我就放弃了。经历了这些之后,我就好想好想给电脑换装个SSD,也不知道行不行。

算法分析笔记

寵の児 提交于 2019-11-29 19:24:25
算法分析 第一章 计测试一班段元伟20176441 在已知条件和所求问题之间总存在着某种相互联系的关系, 如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。 无论顺推还是逆推,其关键是要找到递推式。 1 . 求菲波那契数列的前 n 项 Fibonacci 数列:0,1,1,2,3,5,8,13,21,34,…… f0 = 0 f1 = 1 fn = fn-1 + fn-2 ( n >= 2 ) #include using namespace std ; int main(){ int n, i, a0, a1 ; cout << "n = " ; cin >> n ; a0 = 0 ; a1 = 1 ; cout << a0 << " "<< a1 << " "; for ( i = 2; i <= n/2 ; i ++ ){ a0 = a0 + a1 ; a1 = a1 + a0 ; cout << a0 << " "<< a1 << " "; if ( i % 5 == 0 ) cout << endl ; } if ( n > (i-1) 2 ) cout << a0+a1 << endl ; return 0; } 2. 求 N 层汉诺塔的移动次数 递推关系分析 f(n)=2 f(n-1)+1 边界条件:f(1)=1.

python快速学习回忆版本------第六章-2

 ̄綄美尐妖づ 提交于 2019-11-29 18:26:18
''' python 内置map() 和reduce() map(fn,lsd) 参数: fn:是一个函数 lsd:集合 功能:将传输的函数fn依次作用到lsd集合中的每个元素,并把结果作为新的Iterator返回 ''' def chr2int(chr): return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr] ret = map(chr2int,"13586") print(ret) print(list(ret)) ''' reduce(fn,lsd) 参数: fn:函数 lsd:集合 功能:传入的fn 函数作用在lsd集合中,这个fn函数必须接受两个参数,reduce把结果继续和序列的下一个 元素作累计计算 reduce(f,[a,b,c,d]) = f(f(f(a,b),c),d) ''' #求一个序列的和 from functools import reduce def func(x,y): return x+y res = reduce(func,[1,2,3,4,5,6]) print(res) #配合map实现str2int def str2int(s): def chrToint(chr): return {"0":0,"1":1,"2":2,"3":3,"4":4,"5

js中的兼容

…衆ロ難τιáo~ 提交于 2019-11-29 17:27:32
1、事件对象的兼容解决: var e = eve || window.event; 2、键盘事件的兼容解决: var code = e.keyCode || e.which; 3、事件源的兼容解决: var t = e.target || e.srcElement; 4、阻止默认事件的兼容解决: 1 function stopDefault(eve) { 2 if(eve.preventDefault) { 3 eve.preventDefault(); 4 }else { 5 eve.returnValue = false; 6 } 7 } 8 //解释:eve,事件对象 5、监听式绑定事件的兼容解决: 1 function addEvent(ele,type,fn) { 2 if(ele.addEventListener){ 3 ele.addEventListener(type,fn); 4 }else if(eve.attachEvent){ 5 ele.attachEvent("on"+type,fn); 6 } else { 7 ele["on"+type] = fn; 8 } 9 } 6、监听式删除事件的兼容解决: 1 function removeEvent(ele, type, fn) { 2 if (ele.removeEventListener) { 3

浅谈JS的数组遍历方法

久未见 提交于 2019-11-29 17:11:28
用过Underscore的朋友都知道,它对数组(集合)的遍历有着非常完善的API可以调用的,_.each()就是其中一个。下面就是一个简单的例子: var arr = [1, 2, 3, 4, 5]; _.each(arr, function(el) { console.log(el); }); 上面的代码会依次输出1, 2, 3, 4, 5,是不是很有意思,遍历一个数组连for循环都不用自己写了。 _.each()方法遍历数组非常好用,但是它的内部实现一点都不难。下面就一起来看看到底是如何实现_.each()的。 在这之前,我们先来看看_.each()的API。_.each()的一般是如下调用的: _.each(arr, fn, context); 它接收3个参数, 第一个是需要遍历的数组( 其实是对象也是可以的,这个后面我们再一起来讨论 ); 第二个是它的回调函数(这个回调函数可以传入3个参数,如:function(el, i, arr),分别是当前元素、当前索引和原数组); 第三个是回调函数需要绑定到的上下文,即指定回调函数fn的this值。 好啦,需求已经非常明确了,开始干活啦! 我们先来实现一个最简单的_.each(),它不能够修改上下文this的,接收两个参数,代码如下: var _ = {}; // 假设这就是underscore哈 // 一个最简单的_