函数的使用
可以把相同的方法封装起来
函数的声明语法 function 函数名(){ 函数体 } function sayHi(){ document.write('hai~~') } //调用 sayHi()
需求: 1.封装一个函数,计算两个数的和2.封装一个函数,计算1-100之间所有数的和
//1.求个数的和 function getsum(){ let num1 = +prompt('请输入第一个数') let num2 = +prompt('请输入第二个数') console.log(num1 + num2) getsum() } //调用 getsum()
函数的传参
function 函数名(参数列表){ 函数体 } function getSum(num1, num2){ document.write(num1+ num2) } //例题: function getSum(start,end){ //形参 //end =50 // console.log(end) let sum =0 for(let i= start; i<= end; i++){ sum += i } console.log(sum) } getsum(1,50) //实参 //1开始 50结束 //为了防止没有传参报错,可以设默认值 function getSum(x=0,y=0){ //x=1 // num1 默认的值 undefined document.write(x +y) } getsum(1,2) getSum()//没有传参会报错 NaN 没有传参时才会执行
题:
需求:学生的分数是一个数组,计算每个学生的总分 分析: 1.封装一个求和函数 2.传递过去的参数是一个数组 3.函数内部遍历数组求和 //11.封装函数 function getArrSum(arr=[]){ //给个空数组为默认值 // console.log(arr) let sum=0 for(let i=0;i< arr.length; i++){ sum += arr[i] } console.log(sum) } getArrSum([1,2,3,4,5]) //结果15 getArrSum([11,22,33]) //结果66 getArrSum() // 防止报错
题2:
//求n~m的累加和 function getSum(n=0,m=0){ let sum =0 for(let i=n;i<= m; i++){ sum += i } console.log(sum) } // getSum() // getSum(1,2) let num1 = prompt('请输入起始值:') let num2 = prompt('请输入结束值:') //调用函数 getSum(num1,num2)
函数的返回值
把处理结果返回给调用者
语法:
return 数值
function getsum(x,y){ return x+y } let num = getSum(10,30) document.write(num) //声明一个变量接收变量
题:
//1 求和函数的写法 function getTotalPrice(x,y){ return x+y } let sum= getTotalPrice(1,2)//记得定义一个变量接收 console.log(sum) //注意:return后面的语句不能换行写 //没有返回值会报错,返回undefined
函数例题:
//11.求最大值函数function getMax(x,y){ return x>y? x:y } let max=getMax(1,2) console.log(max) //2、求任意数组的最大值,并且返回 function getArrValue(arr=[]){ //(1)先准备一个ax变量存放数组的第一个值 let max = arr[0] //(2)遍历比较 for(let i=1;i< arr.length; i++){ if(max< arr[i]){ max = arr[i] } } //(3)返回值 return max } let max=getArrValue([1,3,5,7,9]) console.log(max) //如果要同时拿到最大和最小值 return[max,min] let newArr =getArrValue([1,3,5,7,9]) console.log(newArr) //或者 console.log(`数组的最大值是:${newArr[0]}`); console.log(`数组的最小值是:${newArr[1]}`);
作用域:
增强了程序的可行性,减少了名字冲突
1.全局作用域
全局有效 作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件
2.局部作用域
局部有效 作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系所以也称为函数作用域。
访问原则:在能够访问到的情况下 先局部,局部没有在找全局
匿名函数
没有名字的函数,无法直接使用。 使用方式: 1.函数表达式 2.立即执行函数
<body> <button>点击我</button> <script> let btn = document.querySelector('button') btn.onclick = function(){ alert('我是匿名函数') } </script> </body>
2.立即执行函数
// 方式1 (function(){console.log(11)})(); //1 方式2 (function(){console.log(11)}()); //不需要调用,保存就立即执行 //要记得加分号结束 (function(x,y){//形参 console.log(x+ y) })(1,2);//实参 //结果为3