目标:说出为什么我们需要函数
函数:
fuction,是被设计为执行特定任务的代码块
说明:
函数可以把具有相同或相似的逻辑代码“包裹起来”,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码重复使用!
提问: 为什么我们需要函数?
答: 可以实现代码复用,提高开发效率。
提问: 函数是什么?
答:function执行特定任务的代码块。
目标 : 掌握函数语法 ,把代码封装起来
函数声明语法:
function 函数名() {
函数体
}
例子:
function sayhi() {
document.write('sayhi);
}
函数名的命名与规范
和变量名基本一致
尽量小驼峰式命名法
前缀应该为动词
命名建议: 常用动词约定
总结:
1.函数是用哪个关键词声明的?
答: function
2.函数不调用会执行吗?如何调用函数。
答:函数不调用,自己不会执行;
调用方式: 函数名()
3.函数的复用代码和重复循环代码有什么不同?
答:循环代码写完即执行,不能很方便控制执行位置;
函数则是随时调用随时使用
现在做两个题练习一下把:
第一题:写一个打招呼的函数:要求网页弹出hi-
第二题: 把99乘法表封装到函数里面,重复调用三次。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function getsum() {
//99乘法表循环代码
for (let i = 1; i <=9 ; i++) {
for (let j = 1; j <= i ; j++ ) {
document.write(`${j}x ${i} = ${i*j} `);
}
document.write('<br>');
}
}
//调用函数
getsum();
getsum();
getsum();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function sayHello() {
alert('hi');
}
sayHello();
</script>
</body>
</html>
为什么要有参数的函数
思考:这样的函数只能求 10 + 20 ,这个函数功能局限性非常大
function getsum() {
let num1 = 10;
let num2 = 20;
console.log(num1+num2);
}
解决方法 :
要把计算的数字传到函数内
结论:
若函数完成功能需要调用者传入数据,那么就需要有参数的函数
这样可以极大提高函数的灵活性
3.形参和实参
形参 :声明函数时写在函数右边小括号里的值叫形参(形式上的参数)
实参:调用函数时写在函数名右边小括号里的就叫做实参(实际上的参数)
形参可以理解为实在函数内声明的变量( 比如num1 = 10) ,实参可以理解为给这个变量赋值
开发中尽量保证形参和实参个数一致
函数的返回值
提问:什么是函数?
答:函数是被设计执行特定任务的代码块;
提问:执行完特定任务,然后呢?
把任务结果给我们。
缺点:
把计算后的结果处理方式写死了,内部处理了。
解决:把处理结果返回给调用者
有返回值的概念
当调用某个函数,这个函数会返回一个结果出来。
这就是返回值的函数。
当函数返回数据出去时,用return关键词
用return返回数据的细节:
1.在函数体内使用return关键词将内部的执行结果交给函数外部使用
2.函数内部只能出现一次return,并且return后面代码不会再被执行,所以return后面的数据不要换行写
3.return 会立即结束当前函数
4.函数可以没有return ,这种情况默认返回值为undefined
1.为什么要函数有返回值
函数执行后得到结果,结果是调用者想要拿到的(一句话,)