福建省高速公路建设管理网站软件开发工具和环境

news/2025/9/24 7:34:05/文章来源:
福建省高速公路建设管理网站,软件开发工具和环境,网络营销是什么的思维导图,设计图片素材网站有哪些重点 更多前端知识 诚邀各位前端从事者爱好者加入前端大佬技术交流社区#xff0c;本社区主要分享技术栈、个人心得、技术交流、问题解惑等前端体系交流 点击下方文字加入 前端大佬技术交流社区 1. 函数的定义和调用 1.1 函数的定义方式 方式1 函数声明方式 function 关键…重点 更多前端知识 诚邀各位前端从事者爱好者加入前端大佬技术交流社区本社区主要分享技术栈、个人心得、技术交流、问题解惑等前端体系交流 点击下方文字加入 前端大佬技术交流社区 1. 函数的定义和调用 1.1 函数的定义方式 方式1 函数声明方式 function 关键字 (命名函数) function f1() {console.log(命名函数) }方式2 函数表达式(匿名函数) var f2 function () {console.log(匿名函数) }方式3 new Function() /*参数1函数形参参数2函数形参参数3函数体*/ var f3 new Function(m, n, console.log(m-n)) // 传入实参 f3(4,2) 注意 Function 里面参数都必须是字符串格式第三种方式执行效率低也不方便书写因此较少使用 1.2 函数的调用 // 普通函数命名函数和匿名函数 function f1() {console.log(人生何处不相逢); } var f2 function () {console.log(寒江孤影江湖故人相逢何必曾相识); } // 对象中的函数专业点叫做方法通过 对象.方法 方式调用 var Person {speak: function () {console.log(人生处处是歌声);} } // 构造函数通过 new 关键字调用 function Star() { } new Star() // 事件处理函数事件触发时被调用 element.onclick function () { } // 定时器函数由定时器选择时机调用 setInterval(function () { }, 1000) // 立即执行函数立即调用 (function () {console.log(first off) }())2.this 2.1函数内部的this指向 这些 this 的指向是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同 一般指向我们的调用者. 2.2改变函数内部 this 指向 2.2.1 call方法 call()方法调用一个对象。简单理解为调用函数的方式但是它可以改变函数的 this 指向 应用场景: 经常做继承. var o {name: andy }function fn(a, b) {console.log(this);console.log(ab) }; fn(1,2)// 此时的this指向的是window 运行结果为3 fn.call(o,1,2)//此时的this指向的是对象o,参数使用逗号隔开,运行结果为3以上代码运行结果为: 复习使用this实现继承 2.2.2 apply方法 apply 方法的用于与call 非常类似区别在于不能以参数列表的形式传递实参必须以数组的形式传递 var o {name: andy}function fn(a, b) {console.log(this);console.log(a b)};// 普通调用fn(1, 2)// call调用将函数中的this修改为o对象fn.call(o, 1, 2)// apply 调用区别在于参数列表必须以数组形式传递fn.apply(o,[1,2]) 可以看到我们传入函数的实参是数组但是函数内部会自动展开为参数列表 利用这一特性我们可以结合 Math.max 方法求数组的最大值或者最小值 Math.max 方法可以求一组数字的最大值语法如下 Math.max(1,2,3,4,5)参数为参数列表形式 利用apply 可以将数组传入 var numbers [3, 2, 44, 11, 66, 7] var maxMath.max.apply(null,numbers) console.log(max);也可以利用 ES6 的 Spread syntax 语法 var maxMath.max(...numbers)2.2.3 bind方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind bind() 方法不会调用函数,但是能改变函数内部this 指向 如果只是想改变 this 指向并且不想调用这个函数的时候可以使用bind 应用场景:不调用函数,但是还想改变this指向 var o {name: andy};function fn(a, b) {console.log(this);console.log(a b); }; var f fn.bind(o, 1, 2); //此处的f是bind返回的新函数 f();//调用新函数 this指向的是对象o 参数使用逗号隔开解惑 上面的代码 var f fn.bind(o, 1, 2)的作用就是将 fn 函数拷贝了一份名称叫做 f同时将函数 f 中的 this 修改为对象o所以函数 f 与 fn 的函数体是一样的只不过内部 this 的指向不同了 如下代码才是调用执行函数 f而上面的代码仅仅完成上面的任务但不会执行函数 fn 也不会执行新函数 f f()应用 页面中有1个div默认为红色鼠标悬浮后变为蓝色3秒之后恢复成红色 var div document.querySelector(div) div.addEventListener(mouseover, function () {this.style.backgroundColor bluesetTimeout(function () {div.style.backgroundColor red}, 3000); })定时器中thiswindow所以不能使用this必须使用元素名称div 当然可以使用 var thatthis 的方式 但这两种方式都有问题如实现下面的效果 当前页面上有3个div默认都为红色鼠标悬浮到某个div上颜色变为蓝色3秒后恢复成红色 var divs document.querySelectorAll(div)for (var i 0; i divs.length; i) {divs[i].addEventListener(mouseover, function () {// 这里的this当前触发事件的某个具体divthis.style.backgroundColor bluesetTimeout(function () {// 下面的代码应该怎么写}, 3000);}) }定时器中的thiswindow所以不能使用window 也不能使用divs[i]因为 i 的索引在事件发生时并不是你想象中的索引 当然可以使用 thatthis 的方式但会多创建局部变量 可以利用bind方法 这里使用bind最合适因为仅仅是修改了函数中this的指向并不会马上执行3秒之后由系统再次调用 注意bind 方法会创建一个新函数所以3秒后调用的是新函数在新函数中thisdiv 问上面不是需要声明一个变量接收bind创建的新函数吗为什么这里不需要 同学请先搞清楚什么时候需要返回值什么时候不需要 2.2.4 call、apply、bind三者的异同 共同点 : 都可以改变this指向 不同点: call 和 apply 会调用函数, 并且改变函数内部this指向.call 和 apply传递的参数不一样,call传递参数使用逗号隔开,apply使用数组传递bind 不会调用函数, 可以改变函数内部this指向. 应用场景 call 经常做继承.apply经常跟数组有关系. 比如借助于数学对象实现数组最大值最小值bind 不调用函数,但是还想改变this指向. 比如改变定时器内部的this指向. 3.严格模式 3.1什么是严格模式 JavaScript 除了提供正常模式外还提供了严格模式strict mode。ES5 的严格模式是采用具有限制性 JavaScript变体的一种方式即在严格的条件下运行 JS 代码。 严格模式在 IE10 以上版本的浏览器中才会被支持旧版本浏览器中会被忽略。 严格模式对正常的 JavaScript 语义做了一些更改 1.消除了 Javascript 语法的一些不合理、不严谨之处减少了一些怪异行为。 2.消除代码运行的一些不安全之处保证代码运行的安全。 3.提高编译器效率增加运行速度。 4.禁用了在 ECMAScript 的未来版本中可能会定义的一些语法为未来新版本的 Javascript 做好铺垫。比如一些保留字如class,enum,export, extends, import, super 不能做变量名 聊聊 TS 3.2开启严格模式 严格模式可以应用到整个脚本或个别函数中。因此在使用时我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况。 脚本开启严格模式函数开启严格模式 script// 在当前脚本中启用严格模式script开始标记和结束标记之间生效// use strictvar nameyhbage20function fn(){// 在函数中开启严格模式use strictgender男}fn()/script3.3严格模式中的变化 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode 严格模式对 Javascript 的语法和行为都做了一些改变。 use strict num 10 console.log(num)//严格模式后使用未声明的变量 -------------------------------------------------------------------------------- var num2 1; delete num2;//严格模式不允许删除变量删除变量的目的是希望释放内存处理方式一般是将变量的值设置为null -------------------------------------------------------------------------------- function fn() {console.log(this); // 严格模式下全局作用域中函数中的 this 是 undefined } fn(); --------------------------------------------------------------------------------- function Star() {this.gender 男; } // 不加new 调用Star则thisundefined console.log(Star().gender) // 加new 调用Star则this对象 console.log(new Star().gender) ---------------------------------------------------------------------------------- setTimeout(function() {console.log(this); //严格模式下定时器 this 还是指向 window }, 2000); 另外严格模式下函数的参数名称应该唯一 // 非严格模式下 function f1(m, m) {console.log(m m) } f1(1,2) // 4分析一下原因为什么事4严格模式下会报错 4.高阶函数 高阶函数是对其他函数进行操作的函数它接收函数作为参数或将函数作为返回值输出。 函数作为参数 函数作为返回值 函数也是一种数据类型同样可以作为参数传递给另外一个参数使用。最典型的就是作为回调函数。 同理函数也可以作为返回值传递回来 函数作为参数案例 function fn(m, n, callback) {console.log(m n)// 函数主体执行结束后才会执行回调函数callback callback() } fn(3, 4, function () {console.log(我就是回调函数) })jquery 中大量应用了回调函数比如动画完成后执行某个操作 5.闭包 5.1变量的作用域复习 变量根据作用域的不同分为两种全局变量和局部变量。 函数内部可以使用全局变量。函数外部不可以使用局部变量。当函数执行完毕本作用域内的局部变量会销毁。 5.2什么是闭包 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures 在JS中函数每次创建都会生成闭包closure这个闭包包含函数及其词法环境大概类似于执行上下文 闭包是一种执行机制内部函数总是可以访问其所在的外部函数中声明的变量和参数即使在其外部函数执行结束之后 /*在一个函数中又嵌套函数在JS中是没有问题的1内部作用域可以访问外部作用域所以f2中可以访问f1中的变量2在全局作用域内不访问函数f1中的变量*/function f1() {var m 100return function() {console.log(m)} }var myfuncf1()// myfunc 是一个变量引用了f2的地址myfunc() 就相当于执行了 f2()myfunc() // f2()// console.log(m)通过上面案例发现闭包可以延伸变量的作用范围。 解惑 一般情况下下面代码执行后外部函数f1就执行完毕了那么函数内部的成员数据都会被销毁包括变量 m但是因为内部函数f2使用了变量m而函数f2又被返回给了变量 myfunc即变量myfuc引用了内部函数f2此时 f2还没有执行所以外部函数f1就不能释放自己的变量m f1()我们可以将 子函数f2 称作闭包函数有争议 我们再对闭包做一个总结函数创建时形成一个闭包闭包让内部函数可以访问外部函数的变量和参数并且通过向外返回内部函数使得在函数外部也可以访问函数内部的数据 闭包的三个特性 1函数嵌套函数 2函数内部可以访问函数外部的变量和参数 3外部函数执行完毕后参数和变量不会被垃圾回收机制回收 5.3闭包的案例 利用闭包的方式得到当前li 的索引号 for (var i 0; i lis.length; i) { // 利用for循环创建了4个立即执行函数 // 立即执行函数也成为小闭包因为立即执行函数里面的任何一个函数都可以使用它的i这变量 (function(i) {lis[i].onclick function() {console.log(i);}})(i); } 但是这种案例使用闭包其实并不是最好的解决方案因为每次循环都要创建一个函数而且每个i 的值都会被保存不能释放所以执行效率会低 将i的值存储于li标签的自定义属性中的方式更加可取 代码 任务单 闭包应用-3秒钟之后,打印所有li元素的内容 下面代码遍历所有li标签创建了三个定时器3秒之后打印每个li标签元素内容 for (var i 0; i lis.length; i) {(function(i) {setTimeout(function() {console.log(lis[i].innerHTML);}, 3000)})(i); }其实使用我们前面学习的 bind 方法也是可以的 代码 任务单 闭包应用-计算打车价格 /*需求分析 打车起步价13(3公里内), 之后每多一公里增加 5块钱. 用户输入公里数就可以计算打车价格 如果有拥堵情况,总价格多收取2块钱拥堵费*/var car (function () {var start_price 13var start_juli 3var total 0return {price: function (juli) {if (juli start_juli) {total start_price} else if (juli 3) {total start_price (juli - start_juli) * 5}return total},yondu: function (flag) {return flag ? total 2 : total}}})() console.log(car.price(3)); console.log(car.price(10)); console.log(car.yondu(false)); console.log(car.yondu(true));解惑 1、立即执行函数中的代码立即执行不会等待调用所以 变量 car 引用的是一个对象 2、引用的对象中包含两个函数 price 和 yongdu这两个函数属于立即执行函数的子函数 3、子函数中引用了外部函数中的变量所以形成了闭包 4、上面的案例并非非要这么编写程序只是为了练习闭包的使用 6.递归 6.1什么是递归 **递归**如果一个函数在内部可以调用其本身那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数 **注意**递归函数的作用和循环效果一样由于递归很容易发生“栈溢出”错误stack overflow所以必须要加退出条件return。 6.2利用递归求1~n的阶乘 //利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..nfunction fn(n) {if (n 1) { //结束条件return 1;}return n * fn(n - 1);}console.log(fn(3));6.3利用递归求斐波那契数列 // 利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21... // 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值 // 我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值 function fb(n) {if (n 1 || n 2) {return 1;}return fb(n - 1) fb(n - 2); } console.log(fb(3));6.4利用递归遍历数据 // 我们想要做输入id号,就可以返回的数据对象var data [{id: 1,name: 家电,goods: [{id: 11,gname: 冰箱,goods: [{id: 111,gname: 海尔}, {id: 112,gname: 美的},]}, {id: 12,gname: 洗衣机}]}, {id: 2,name: 服饰 }]; //1.利用 forEach 去遍历里面的每一个对象function getID(json, id) {var o {};json.forEach(function(item) {// console.log(item); // 2个数组元素if (item.id id) {// console.log(item);o item;return o;// 2. 我们想要得里层的数据 11 12 可以利用递归函数// 里面应该有goods这个数组并且数组的长度不为 0 } else if (item.goods item.goods.length 0) {o getID(item.goods, id);}});return o; }重点 更多前端知识 诚邀各位前端从事者爱好者加入前端大佬技术交流社区本社区主要分享技术栈、个人心得、技术交流、问题解惑等前端体系交流 点击下方文字加入 前端大佬技术交流社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

包小盒设计网站wordpress手机版主题无效

简单工厂模式描述的是,通过类的继承关系,父类(工厂类)与子类(产品类),调用父类中的方法,实际干活儿的是子类中的方法;封装需求的不确定性,做出通用的编程&…

德阳网站建设优化阳朔到桂林北

2558. 从数量最多的堆取走礼物 原题地址: 力扣每日一题:从数量最多的堆取走礼物 给你一个整数数组 gifts ,表示各堆礼物的数量。每一秒,你需要执行以下操作: 选择礼物数量最多的那一堆。 如果不止一堆都符合礼物数量最…

开网站做代销好网站根目录 本地共享

jarsigner, keytool 这2个都是JDK的内置工具,在JDK的bin目录中可以找到, 下面是使用jarsigner给jar文件签名的5个步骤: 1. 使用java的jar工具创建JAR文件; # 将当前文件夹下的所有文件打包到myapp-1.0.jar文件中 后面的*为通配符, 也可以指定需要打包的jar中的文件或者文件夹…

苏州网站开发外包公司免费ppt模板下载公众号

应用场景 上一篇《Spring Cloud Stream消费失败后的处理策略(一):自动重试》介绍了默认就会生效的消息重试功能。对于一些因环境原因、网络抖动等不稳定因素引发的问题可以起到比较好的作用。但是对于诸如代码本身存在的逻辑错误等&#xff…

做网站公司哪家正规古楼角网站建设

2019独角兽企业重金招聘Python工程师标准>>> 由于最近用阿里云日志服务整合log4j,在配置com.aliyun.openservices.log.log4j.LoghubAppender需要设置一些参数,因为项目中有统一的配置文件,所以想要可以直接在log4j.xml中通过${}来…

2025年国家科技奖初评公布(科技发明奖)

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选) 添加图片注释,不超过 140 …

做网站的收入上海平台网站建设

SQL Server横向扩展方案-SODA每次在提到SQL Server扩展性问题的时候,似乎很多的SQL Server DBA或者使用微软技术开发的朋友心里总是一整痛:SQL Server只能纵向的扩展(Scaling-Up),无法横向的扩展(Scaling-Out)。每次有人提到Oracle和SQL Serv…

wordpress替代广州网站优化公司

对于前端来说,2023 是非同寻常的一年。我们见证了争相抢占甚至是发明服务器端渲染(SSR)市场的热潮、AI 的不断进步、Web 渲染器和 JS 引擎的寒武纪大爆发、一大批有力的竞争者试图摧毁巨头的统治地位…… 在开始预测未来一年发展趋势之前&am…

推荐系统网站开发徐州做网站企业

本次以多台机器需部署zabbix客户端为例: 机器先做免密互信,ansible主机上执行ssh-keygen,一路回车,然后将公钥发送给需管理的主机: ssh-copy-id rootIP 1、编辑hosts文件,添加需配置的主机IP,并测试连通…

最好的自助建站系统wordpress forest

在上一节中,我们简单讲述了数据库和SQL的基本概念。 本节我们讲述一下环境搭建,为下一节讲表的基本操作做下铺垫。 环境搭建 具体到操作,我们就要准备一些环境了。如果不进行练习,我们学习的知识将很快被遗忘。 MySQL安装&…

大岭山镇仿做网站廊坊网站建设-纵横网络+网站

海龟编辑器是一款专为广大少儿打造的Python编辑器,该软件功能强大且使用便利,可以帮助孩子们以搭积木的方式来学习Python,并且支持Python代码和图形化积木的双向互相转译,不但可以有效提升孩子的学习兴趣,而且还能够降…

局网站建设招标深圳网站建设 卓

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers,即Bert; 第二部分 探索BERT变体 从本章开始的诸多内容,以理解为目标,着重关注对音频相关的支持(如果有的话)…

html5手机app网站模板免费下载网络网页制作

我们在开发中经常会用到一些指定区域进行打印机打印,但是使用常规方式打印会将全部页面打印,当然相同都为打印,但是打印出来的内容并不是我们需要的东西,进行给大家分享如何设置打印机指定区域进行打印;该标签中的内容…

网站 编程语言建站论坛

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 主键约束可以看成是非空约束再加上唯一约束 也就是说设置为主键列,不能为空,不能重复 像一般用户编号是不可能重复的,也不可能为空的 …

网站备备份教程上海集锦信息科技有限公司

目录 概述 1 STM32H750 HSE时钟介绍 2 使用STM32Cube创建Project 3 认识HSE时钟 3.1 HSE时钟的特性 3.2 HSE的典型应用电路 4 STM32Cube中配置时钟 4.1 时钟需求 4.2 配置参数 4.2.1 使能外围资源 4.2.2 使用STM32Cube注意项 4.2.3 配置参数 5 总结 概述 本文主要…

九江市建设规划局旧网站网站优化+山东

来源:集智俱乐部 作者:斯蒂芬沃尔夫勒姆 数学家、物理学家、计算机科学家导语:圣塔菲研究所被誉为复杂性科学的圣地,被称为“没有围墙的研究所”,那么它是如何创建发展起来的呢?2019 年,为了纪…

网站首页优化的目的wordpress旧文章更新

概述 当用户打开、切换和返回到对应应用时,应用中的UIAbility实例会在其生命周期的不同状态之间转换。UIAbility类提供了一系列回调,通过这些回调可以知道当前UIAbility实例的某个状态发生改变,会经过UIAbility实例的创建和销毁,…

周至县做网站上海企业建站推荐

使用数据库的时候,我们可以用JDBC来实现mysql数据库与java程序之间的通信,为了提高通信效率,我们有了数据库连接池比如druid等等。而我们想通过Java程序控制redis,同样可以借助一些工具来实现,这就是redis客户端&#…

汕头网站建设推广方法WordPress多功能新闻积分商城主题

ylbtech-Vue.js:路由1.返回顶部 1、Vue.js 路由 本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 Vue.…

网站模板素材青海网站建设有哪些

随着公司的发展和市场竞争的影响,越来越多的创业者希望注册一家好名称的公司,以提高企业知名度和竞争力。但是,注册中字头无地域公司需要满足一定的条件和流程。本文将对中字头无地域公司注册条件及流程进行详细的介绍。可以致电咨询我或者来…