您的位置:首页 > Web前端 > JavaScript

JavaScript 函数详解

2018-07-31 18:19 155 查看

转载请注明预见才能遇见的博客: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.函数的定义 看代码

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

//函数调用
cook();

3.案例

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

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

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

案例:求两个数字的和

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

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

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

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

[code]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之间所有偶数的和

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

案例:求一个数组的和

[code]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.函数的参数

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

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

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

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

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

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

5.函数的返回值

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

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

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

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

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

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

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

[code]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);
[code]//函数定义: 有参数有返回值的函数
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之间所有数的和

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

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

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

案例;求圆的面积

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

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

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

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

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

[code]/**
*  给我一个数组,我返回一个数组(最大值,最小值,和)
* @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

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

[code]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

[code]//求斐波那契数列,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));

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

[code]//判断这个年份是不是闰年
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个数字的和

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

看代码

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

f1(10,20,30,40,100,200);//调用
[code]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.函数的其他的定义方式

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

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

看代码

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

看代码 

[code]//函数声明
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.函数也是一种数据类型 看代码

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

10.回调函数  看代码

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

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

看代码

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

sayHi(suSay);

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

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

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

 

JavaScript函数详解

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

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: