JavaScript 函数详解

转载请注明预见才能遇见的博客:https://my.csdn.net/

原文地址:https://blog.csdn.net/weixin_42787326/article/details/81317398

JavaScript函数详解

目录

JavaScript函数详解

1.函数的概念和作用

2.函数的定义 看代码

3.案例

案例:求两个数字的和

案例:求两个数字的最大值

案例:求三个数字的最大值

案例:求1-100之间所有偶数的和

案例:求一个数组的和

4.函数的参数

5.函数的返回值

6.案例

案例:- 求1-n之间所有数的和

案例:- 求n-m之间所有数的和

案例;求圆的面积

案例:- 判断一个数是否是素数(质数),只能被1和自身整除,质数是从2开始

案例:求一个数组中的最大值和最小值还有和

案例:通过函数实现数组反转

案例:求斐波那契数列,12---144

案例:输入,年月日,获取这个日期是这一年的第多少天

7.arguments对象

8.函数的其他的定义方式

9.函数也是一种数据类型 看代码

10.回调函数  看代码

11.函数作为返回值使用  看代码


1.函数的概念和作用

函数:把一坨重复的代码封装,在需要的时候直接调用即可

函数的作用:代码的重用

2.函数的定义 看代码

* 函数的定义
* 语法:
*
* function 函数名字(){
*   函数体-----一坨重复的代码
* }
*
* 函数的调用:
*
* 函数名();
//函数定义
function cook() {
  console.log("切菜");
}

//函数调用
cook();

3.案例

//函数需要先定义,然后才能使用

//函数名字:要遵循驼峰命名法

//函数一旦重名,后面的会把前面的函数覆盖

案例:求两个数字的和

function consoleSum() {//函数定义
  var num1 = 100;
  var num2 = 200;
  var sum = num1 + num2;
  console.log(sum);
}
//调用
consoleSum();

案例:求两个数字的最大值

function consoleMax() {
  var x = 10;
  var y = 20;
  console.log(x > y ? x : y);
}
consoleMax();

案例:求三个数字的最大值

function consoleMax2() {
  var x = 10;
  var y = 20;
  var z = 30;
  var max = x > y ? (x > z ? x : z) : (y > z ? y : z);//嵌套的三元表达式
  console.log(max);
}

consoleMax2();

案例:求1-100之间所有偶数的和

function everyEvenSum() {
  var sum=0;
  for(var i=1;i<=100;i++){
    if(i%2==0){
      sum+=i;
    }
  }
  console.log(sum);
}
everyEvenSum();

案例:求一个数组的和

function consoleArraySum() {
  var sum=0;
  var arr=[10,20,30,40,50];
  for(var i=0;i<arr.length;i++){
    sum+=arr[i];
  }
  console.log(sum);
}
consoleArraySum();

4.函数的参数

* 在函数定义的时候,函数名字后面的小括号里的变量就是参数,目的是函数在调用的时候,用户传进来的值操作

* 此时函数定义的时候后面的小括号里的变量叫参数;写了两个变量,就有两个参数,

* 在函数调用的时候,按照提示的方式,给变量赋值--->就叫传值,把这个值就传到了变量(参数)中

* 形参:函数在定义的时候小括号里的变量叫形参

* 实参:函数在调用的时候小括号里传入的值叫实参,实参可以是变量也可以是值

//函数定义
function consoleSum(x, y) {
  var sum = x + y;//计算和----功能
  console.log(sum);//输出和---第二个功能
}

5.函数的返回值

函数的返回值:在函数内部有return关键字,并且在关键字后面有内容,这个内容被返回了。当函数调用之后,需要这个返回值,那么就定义变量接收,即可

* 如果一个函数中有return ,那么这个函数就有返回值

* 如果一个函数中没有return,那么这个函数就没有返回值

* 如果一个函数中没有明确的返回值,那么调用的时候接收了,结果就是undefined

* (没有明确返回值:函数中没有return,函数中有return,但是return后面没有任何内容)

* 形参的个数和实参的个数可以不一致

* return 下面的代码是不会执行的

function f1(x,y) {
  var sum= x+y;
  return sum;
  console.log("助教才是最帅的");
  return 100;
}
var result=f1(10,20);
console.log(result);

function getSum(x, y) {
  var sum = x + y;
  return sum;//把和返回
}
//函数调用
var result=getSum(10, 20);
console.log(result+10);
//函数定义: 有参数有返回值的函数
function getSum(x, y) {
  return  x + y;//把和返回
}
//函数调用
var result=getSum(10, 20);
console.log(result+10);

//有参数,有返回值的函数
function f1(x,y) {
  return x+y;
}
//有参数,无返回值的函数
function f2(x) {
  console.log(x);
}
//无参数,有返回值的函数
function f3() {
  return 100;
}
//无参数无返回值的函数
function f4() {
  console.log("萨瓦迪卡");
}

6.案例

案例:- 求1-n之间所有数的和

function geteverySum(n) {
  var sum = 0;
  for (var i = 1; i <= n; i++) {
    sum += i;
  }
  return sum;
}
console.log(geteverySum(10));

案例:- 求n-m之间所有数的和

function geteverySum2(n, m) {
  var sum = 0;
  for (var i = n; i <= m; i++) {
    sum += i;
  }
  return sum;
}
console.log(geteverySum2(1, 100));

案例;求圆的面积

function getS(r) {
  return Math.PI * r * r;
}
console.log(getS(5));

案例:- 判断一个数是否是素数(质数),只能被1和自身整除,质数是从2开始

//用这个数字和这个数字前面的所有的数字整除一次(没有1的,没有自身的)

function isPrimeNumber(num) {
  for(var i=2;i<num;i++){
    if(num%i==0){
      //说明有一个数字整除了,就没有必要向后继续整除了,此时就已经验证出不是质数
      return false;
    }
  }
  return true;
}
console.log(isPrimeNumber(8)?"是质数":"不是质数");

案例:求一个数组中的最大值和最小值还有和

/**
 *  给我一个数组,我返回一个数组(最大值,最小值,和)
 * @param array参数是一个数组
 * @returns {*[]}返回值是一个数组,第一个元素值是最大值,第二个元素值是最小值,第三个元素值是和
 */
function getArrayMaxAndMinAndSum(array) {
  var min = array[0];//最小值
  var max = array[0];//最大值
  var sum = 0;//和
  for (var i = 0; i < array.length; i++) {
    sum += array[i];//和
    //最大值
    if (max < array[i]) {
      max = array[i];
    }// end if
    //最小值
    if (min > array[i]) {
      min = array[i];
    }// end if
  }// end for
  var arr = [max, min, sum];
  return arr;
}
//测试
var resultArray = getArrayMaxAndMinAndSum([1, 2, 3, 4, 5, 6, 7]);
console.log("最大值:" + resultArray[0]);//7
console.log("最小值:" + resultArray[1]);//1
console.log("和:" + resultArray[2]);//28

案例:通过函数实现数组反转

function reverseArray(arr) {
  for (var i = 0; i < arr.length / 2; i++) {
    var temp = arr[i];
    arr[i] = arr[arr.length - 1 - i];
    arr[arr.length - 1 - i] = temp;
  }
  return arr;
}
console.log(reverseArray([1, 2, 3, 4, 5]));

案例:求斐波那契数列,12---144

//求斐波那契数列,12---144
//1 1 2 3 5 8 13 21 34 55 89 144
function getFib(num) {
  var num1=1;
  var num2=1;
  var sum=0;
  for(var i=3;i<=num;i++){
    sum=num1+num2;
    num1=num2;
    num2=sum;
  }
  return sum;
}
console.log(getFib(12));

案例:输入,年月日,获取这个日期是这一年的第多少天

//判断这个年份是不是闰年
function isLeapYear(year) {
  return year%4==0&&year%100!=0||year%400==0;
}
//年---月---日:2017年4月28日
function getDays(year, month, day) {
  //定义变量存储对应的天数
  var days = day;
  //如果用户输入的是一月份,没必要向后算天数,直接返回天数
  if (month == 1) {
    return days;
  }
  //代码执行到这里-----说明用户输入的不是1月份
  //用户输入的是7月份23日----1,2,3  +23
  //定义一个数组,存储每个月份的天数
  var months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
  //小于的是输入的月份-1
  for (var i = 0; i < month - 1; i++) {
    days += months[i];
  }
  //需要判断这个年份是不是闰年
  if(isLeapYear(year)&&month>2){
    days++;
  }
  return days;
}

console.log(getDays(2000,3,2));

7.arguments对象

计算n个数字的和

定义一个函数,如果不确定用户是否传入了参数,或者说不知道用户传了几个参数,没办法计算,但是如果在函数中知道了参数的个数,也知道了,每个参数的值.可以

看代码

//定义
function f1() {
  //获取的是函数在调用的时候,传入了几个参数
  //console.log(arguments.length);
  //使用arguments对象可以获取传入的每个参数的值
  console.log(arguments);
}

f1(10,20,30,40,100,200);//调用
function f1() {
  //arguments----->数组使用------伪数组---
  var sum=0;
  for(var i=0;i<arguments.length;i++){
    sum+=arguments[i];
  }
  return sum;
}

console.log(f1(10,20,30));

8.函数的其他的定义方式

* 命名函数:函数如果有名字,就是命名函数

* 匿名函数:函数如果没有名字,就是匿名函数

看代码

* 函数表达式:
* 把一个函数给一个变量,此时形成了函数表达式
* var 变量=匿名函数;
* 例子:
* var f1=function (){
*
* };
* 如果是函数表达式,那么此时前面的变量中存储的就是一个函数,而这个变量就相当于是一个函数,就可以直接加小括号调用了
* f1();
*
* 注意:
* 函数表达式后面,赋值结束后,要加分号

看代码 

//函数声明
function f1() {
  console.log("助教好帅哦");
}
f1();
function f1() {
  console.log("小苏好猥琐哦");
}
f1();

//函数表达式
var f2 = function () {
  console.log("助教没有小杨帅");
};
f2();
f2 = function () {
  console.log("小杨真的很帅");
};
f2();
//函数自调用
(function () {
  console.log("阿涅哈斯诶呦");
})();
(function () {
  console.log("嘎嘎")
})();

9.函数也是一种数据类型 看代码

function f1() {
  console.log("我是函数");
}
//如何获取某个变量的类型? typeof
console.log(typeof f1);
//函数是有数据类型,数据类型:是function 类型的

10.回调函数  看代码

函数可以作为参数使用,如果一个函数作为参数,那么我们说这个参数(函数)可以叫回调函数

只要是看到一个函数作为参数使用了,那就是回调函数

看代码

function sayHi(fn) {
  console.log("您好啊");
  fn();//fn此时应该是一个函数
}
function suSay() {
  console.log("我猥琐,我邪恶,我龌龊,小苏说");
}

sayHi(suSay);

11.函数作为返回值使用  看代码

//结论:函数是可以作为返回值使用的:
function f1() {
  console.log("f1函数调用了");
  return function () {
    console.log("这是一个函数");
  };
}

var ff=f1();//调用
//ff就是一个函数了
ff();

JavaScript函数详解

博客地址:https://blog.csdn.net/weixin_42787326/article/details/81317398

猜你喜欢

转载自blog.csdn.net/weixin_42787326/article/details/81317398
今日推荐