您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > JavaScript前端开发案例教程第4章 函数 教学PPT
JS第4章函数•函数的使用•匿名函数•变量的作用域•闭包函数✎学习目标掌握函数的使用方法12掌握变量的作用域掌握匿名函数与闭包函数3✎目录变量的作用域函数的定义与调用匿名函数☞点击查看本小节知识架构☞点击查看本小节知识架构嵌套与递归☞点击查看本小节知识架构✎目录闭包函数☞点击查看本小节知识架构✎4.1函数的定义与调用1.初识函数函数:用于封装一段完成特定功能的代码。相当于将一条或多条语句组成的代码块包裹起来,用户在使用时只需关心参数和返回值,就能完成特定的功能,而不用了解具体的实现。✎4.1函数的定义与调用1.初识函数console.log(parseFloat('7.26e-2'));//返回解析后的浮点数:0.0726console.log(isNaN(''));//判断是否是NaN:falseconsole.log(parseInt('15.99'));//返回解析后的整数值:15观察“内置函数”的使用parseFloat()用于返回解析字符串后的浮点数。isNaN()判断给定参数是否为NaN,判断结果为是,返回true,否则返回false。parseInt()用于返回解析字符串后的整数值。✎4.1函数的定义与调用1.初识函数function函数名([参数1,参数2,……]){函数体……}函数的定义由以下4部分组成:关键字function。函数名。参数。函数体。除了使用内置函数外,JavaScript中还可以根据具体情况自定义函数,提高代码的复用性、降低程序维护的难度。✎4.1函数的定义与调用1.初识函数function:定义函数的关键字。函数名:可由大小写字母、数字、下划线(_)和$符号组成,但是函数名不能以数字开头,且不能是JavaScript中的关键字。参数:是外界传递给函数的值,它是可选的,多个参数之间使用“,”分割。函数体:是专门用于实现特定功能的主体,由一条或多条语句组成。返回值:在调用函数后若想得到处理结果,在函数体中可用return关键字返回。✎4.1函数的定义与调用1.初识函数注意函数的名称最好不要使用JavaScript中的保留字,避免在将来被用作关键字导致出错。✎4.1函数的定义与调用2.参数设置函数可以根据参数的设置分为以下两种:无参函数有参函数✎4.1函数的定义与调用2.参数设置无参函数:适用于不需要提供任何数据,即可完成指定功能的情况。functiongreet(){console.log('Helloeverybody!');}在自定义函数时,即使函数的功能实现不需要设置参数,小括号“()”也不能够省略。✎4.1函数的定义与调用2.参数设置有参函数:适用于开发时函数体内的操作需要用户传递数据的情况。形参:指的就是形式参数,具有特定的含义,在定义有参函数时设置的参数。实参:指的是实际参数,也就是具体的值,在函数调用时传递的参数。functionmaxNum(a,b){a=parseInt(a);b=parseInt(b);returna=b?a:b;}示例✎4.1函数的定义与调用2.参数设置获取函数调用时传递的所有实参:适用于开发时函数体形参不确定的情况。实现方式:利用arguments对象,在函数体内可获取函数调用时传递的实参。其他操作:length属性可获取实参的总数,具体实参值可利用数组遍历方式。functiontransferParam(){console.log(arguments.length);console.log(arguments);}示例✎4.1函数的定义与调用多学一招含有默认值的参数与剩余参数函数参数的设置,在ES6中提供了更灵活的使用方式,如设置形参的默认值等。functiongreet(name,say='Hi,I\'m'){console.log(say+name);}默认值函数的形参在设置时,还可以为其指定默认值。当调用者未传递该参数时,函数将使用默认值进行操作。✎4.1函数的定义与调用多学一招含有默认值的参数与剩余参数函数定义时,还可用“…变量名”的方式动态接收用户传递的不确定数量的实参。functiontransferParam(num1,...theNums){theNums.unshift(num1);console.log(theNums);}functiontransferParam(...theNums){console.log(theNums);}一个确定形参无确定的形参✎4.1函数的定义与调用3.函数的调用当函数定义完成后,要想在程序中发挥函数的作用,必须得调用这个函数。函数的调用非常简单,只需引用函数名,并传入相应的参数即可。函数声明与调用的编写顺序不分前后。函数名称([参数1,参数2,……])[参数1,参数2…]是可选的,用于表示形参列表,其值可以是零个、一个或多个。✎4.1函数的定义与调用4.【案例】字符串大小写转换代码实现思路:①编写HTML表单,设置两个文本框和两个按钮,文本框显示转换前后数据,按钮用于转换。②为按钮添加点击事件,并利用函数deal()处理。③编写deal()函数,根据传递的不同参数执行不同的转换操作。④将转换后的数据显示到对应位置。✎4.2变量的作用域思考:声明变量后就可以在任意位置使用该变量嘛?回答:不是。举例:函数内var关键字声明的变量,不能在函数外访问。functioninfo(){varage=18;}//输出结果:UncaughtReferenceError:ageisnotdefinedconsole.log(age);示例✎4.2变量的作用域总结:变量的使用是有作用域范围的。作用域划分:全局作用域、函数作用域和块级作用域(ES6提供的)。不同作用域对应的变量:全局变量、局部变量、块级变量(ES6提供的)。demo.js文件函数含有{},如for函数作用域全局作用域块级作用域✎4.2变量的作用域全局变量:不在任何函数内声明的变量(显示定义)或在函数内省略var声明变量(隐式定义)都称为全局变量。作用范围:它在同一个页面文件中的所有脚本内都可以使用。demo.js文件varnum=1;函数sum=0;全局变量✎4.2变量的作用域局部变量:在函数体内利用var关键字定义的变量称为局部变量,它仅在该函数体内有效。demo.js文件varnum=1;函数varsum=0;局部变量✎4.2变量的作用域块级变量:ES6提供的let关键字声明的变量称为块级变量,仅在“{}”中间有效,如if、for或while语句等。块级变量demo.js文件varnum=1;函数letsum=0;for循环leti=2;✎4.2变量的作用域多学一招垃圾回收机制在JavaScript中,局部变量只有在函数的执行过程中存在,而在这个过程中会为局部变量在(栈或堆)内存上分配相应的空间,以存储它们的值,然后在函数中使用这些变量,直到函数结束。而一旦函数执行结束,局部变量就没有存在必要了,此时JavaScript就会通过垃圾回收机制自动释放它们所占用的内存空间。✎4.2变量的作用域多学一招垃圾回收机制在开发中若要保留局部变量的值,可以通过以下两种方式实现://第1种方式:利用return返回functiontest(num){num=num+1;returnnum;}varnum=test(24);console.log(num);//输出结果:25//第2种方式:利用全局变量保存varmemory;functiontest(num){memory=num+1;}test(24);console.log(memory);//输出结果:25✎4.3匿名函数1.函数表达式概念:所谓函数表达式指的是将声明的函数赋值给一个变量,通过变量完成函数的调用和参数的传递,它也是JavaScript中另一种实现自定义函数的方式。✎4.3匿名函数1.函数表达式varfn=functionsum(num1,num2){returnnum1+num2;};fn();sum();functionsum(num1,num2){returnnum1+num2;};函数表达式函数声明方式①函数的定义方式不同②函数的调用方式不同③函数定义与调用顺序不同✎4.3匿名函数2.匿名函数概念:匿名函数指的是没有函数名称的函数。作用:可以有效的避免全局变量的污染以及函数名的冲突问题。说明:既是函数表达式的另一种表示形式,又可通过函数声明的方式实现调用。✎4.3匿名函数2.匿名函数varfn=function(num1,num2){returnnum1+num2;};fn(1,2);(function(num1,num2){returnnum1+num2;})(2,3);document.body.onclick=function(){alert('Hi,everybody!');};①函数表达式中省略函数名③处理事件②自调用方式✎4.3匿名函数多学一招箭头函数概念:ES6中引入了一种新的语法编写匿名函数,我们称之为箭头函数。特点:一个箭头函数表达式的语法比一个函数表达式更短。✎4.3匿名函数多学一招箭头函数(p1,p2,…,pN)={statements}参数函数体多个参数:(p1,p2,…,pN)一个参数:(p1)或p1没有参数:()或_函数体:{statements}返回值:{returnexpression;}函数体只有一条语句:expression✎4.3匿名函数多学一招箭头函数//设置1个参数varfn1=x=x+2;console.log(fn1(4));//输出结果:6//设置2个参数varfn2=(x,y)=x+y;console.log(fn2(1,2));//输出结果:3示例✎4.3匿名函数多学一招箭头函数值得一提箭头函数中箭头“=”不是操作符或者运算符,但是箭头函数相比普通的函数受操作符的优先级影响。✎4.3匿名函数3.回调函数概念:所谓回调函数指的就是一个函数A作为参数传递给一个函数B,然后在B的函数体内调用函数A。此时,我们称函数A为回调函数。提示:匿名函数常用作函数的参数传递,实现回调函数。应用:函数体中某部分功能由调用者决定,此时可以使用回调函数。✎4.3匿名函数3.回调函数在JavaScript中还为数组提供了很多利用回调函数实现具体功能的方法。方法名称功能描述find()返回数组中满足回调函数的第一个元素的值,否则返回undefinedevery()测试数组的所有元素是否都通过了回调函数的测试some()测试数组中的某些元素是否通过由回调函数实现的测试forEach()对数组的每个元素执行一次提供的函数map()创建一个新数组,其结果是该数组中的每个元素都调用一次提供的回调函数后返回的结果reduce()对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值reduceRight()接收一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值✎4.3匿名函数3.回调函数以map()方法为例进行演示,对arr数组中的每个元素都按顺序调用一次回调函数。vararr=['a','b','c'];arr.map(function(value,index){console.log(value,index);});参数:map()的参数是一个回调函数fn。fn的第1个参数表示当前数组的元素。fn的第2个参数表示对应元素的索引下标。返回值:回调函数每次执行后的返回值会组合起来形成一个新数组。示例结果:在控制台依次可查看到,“a0”、“b1”和“c2”。✎4.3匿名函数3.回调函数思考:如何利用map()方法实现二维数组的转置?vararr=[[1,2,3],[4,5,6],[7,8,9]];//待转置的数组varreverse=arr[1].map(function(col,i){//利用i获取转置后数组元素的下标returnarr.map(funct
本文标题:JavaScript前端开发案例教程第4章 函数 教学PPT
链接地址:https://www.777doc.com/doc-3873602 .html