函数
1.什么是函数
案例
假如我们要分别计算1到10、5到12、14到35的整数和
//1到10
let sum = 0;
for(let i = 1; i <= 10; i++){
sum += i;
}
console.log(sum);
//5到12
for(let i = 5; i <= 12; i++){
sum += i;
}
console.log(sum);
//14-35
for(let i = 14; i <= 35; i++){
sum += i;
}
console.log(sum);
//重复率太高 我们可以对代码进行封装 当想调用的时候进行调用即可
定义以及作用
函数就是语句的封装,可以让这些代码方便地被
复用
函数具有“
一次定义,多次调用
”的优点使用函数,可以简化代码,让代码更具有可读性
2.函数的定义
和变量类似,函数必须**
先定义
然后才能使用
**JavaScript 有
三种
声明函数的方法。
1.function 命令
使用**
function关键字定义函数
**,function是“功能”的意思
声明一个没有参数的函数
function fun(){
alert("我是一个函数");
}
// 定义函数 , 定义函数的时候不会直接执行
function fun() {
console.log("小甘甘好优秀呀");
console.log("人见人爱");
}
// 函数必须等到调用的时候才能被执行
fun();
fun();
fun();
//也可以充当一个事件函数 事件触发时才执行 不能加()
document.onclick = fun;
也可以充当一个事件函数 , 事件触发时才执行 ,不能加( )
2.函数表达式
除了用
function
命令声明函数,还可以采用变量赋值的写法。
let fn = function() {
console.log("小甘甘加油哦");
};
//这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式
//因为赋值语句的等号右侧只能放表达式。
//采用函数表达式声明函数时,function命令后面不带有函数名。
//如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。
3.Function 构造函数
let add = new Function('x','y','console(x+y)');
//可以传递任意数量的参数给Function构造函数
//只有最后一个参数会被当做函数体
//如果只有一个参数,该参数就是函数体。
let foo = new Function('console.log("小甘甘宝贝");');
// 等同于
function foo() {
console.log("小甘甘宝贝");
}
这种声明函数的方式非常不直观,几乎无人使用。
函数的调用
执行函数体中的所有语句,就称为“调用函数”
调用函数非常简单,只需在函数名字后书写圆括号对即可
语句的执行顺序
function fun() {
console.log("小甘甘最棒了");
console.log("人见人爱");
}
//函数不调用就不会执行
console.log(1);
console.log(2);
fun();//调用的时候主程序的执行权移交给函数 函数体内的所有语句执行完毕 语句执行权交换给主程序
console.log(3);
console.log(4);
函数声明的提升
和变量声明提升类似,函数声明也可以被提升
fun();
function fun() {
console.log("小甘甘最棒了");
console.log("人见人爱");//在预解析阶段会被提升 所以函数调用正常执行
}
函数表达式不能提升
fun(); //报错
let fun = function () {
console.log("小甘甘最棒了");
console.log("人见人爱");
};
函数的重复声明
如果同一个函数被多次声明,后面的声明就会
覆盖
前面的声明。
function fn() {
console.log(1);
}
f() // 2
function fn() {
console.log(2);
}
3.函数的参数
参数
是函数内的一些待定值,在调用函数时,必须传入这些参数的具体值函数的参数可多可少,函数可以没有参数,也可以有多个参数,多个参数需要使用
逗号
隔开
function fn(x){
//形参:函数定义的时候,圆括号中定义形式参数,参数是什么类型的没写,不需要指定类型:
//相当于 let x = 5;
console.log(x);
}
fn(5);//实参:函数调用的时候,传入的参数 传进去是什么类型 x就是什么类型
function add (x , y){
let sum = x + y;
co