1、Function
- 每个 JavaScript 函数实际上都是一个 Function 对象。运行 (function(){}).constructor === Function // true 便可以得到这个结论。
———————引用自官网
2、构造函数
- 创建一个新的 Function 对象。直接调用此构造函数可以动态创建函数,但会遇到和 eval() 类似的的安全问题和(相对较小的)性能问题。然而,与 eval() 不同的是,Function 构造函数创建的函数只能在全局作用域中运行。
———————引用自官网
3、函数的特点
- 可以重复调用,隐藏内部执行过程;
- 函数使用原则:高内聚和低耦合:
① 高内聚(只有一个功能);
② 低耦合(与外界的联系要少);
4、函数返回值
- 函数返回值是通过 return
① return 只能返回一个值;
② return 执行后,跳出函数,return 后面的语句不再执行;
③ 如果函数没有 return,返回的值为 undefined;
5、函数作用域
- 函数的声明可以提升;
- 使用var声明的变量可以提升,但是赋值不能提升;
- 当没有使用变量声明关键字(let / var)时,默认是全局变量;
- 变量作用域:
全局作用域:函数外声明,所有函数都可以使用
块级作用域:函数内声明,只有声明的块级作用域可以使用
6、函数组成
- 函数名(必须)
- 函数体(必须)
- 参数(可省略,请查看:5、函数的分类)
- 返回值(可省略,请查看:5、函数的分类)
7、函数语法
(1)函数关键字自定义函数
① 语法格式:
function 函数名称(可以为空,也可以写形参){
//函数体;
};
② 示例:
<script>
//声明变量并赋值
let NumOne = 10;
let NumTwo = 20;
//调用函数,传入实参,将函数运行结果赋值给result
result = sum(NumOne,NumTwo);
//输出结果
document.write(result);
//自定义一个名为sum的函数,并设置形参num1,num2
function sum(num1,num2){
//计算传入的参数之和
NumThr = num1 + num2;
//返回执行结果
return NumThr;
};
</script>
③ 运行效果
(2)函数表达式(匿名函数)
① 语法格式:
var 函数名 = function(形参1,形参2){
//函数体
};
② 示例:
<script>
//声明变量并赋值
let NumOne = 10;
let NumTwo = 20;
//定义函数,函数名为sum,并设置形参num1,num2
let sum = function(num1,num2){
//计算传入的参数之和
NumThr = num1 + num2;
//返回执行结果
return NumThr;
}
//调用函数,传入实参,将函数运行结果赋值给result
let result = sum(NumOne,NumTwo);
//输出结果
document.write(result);
</script>
③ 运行效果
8、函数的分类
(1)无参无返回值
① 示例:
<script>
//调用函数,结果赋值给result
let result = search();
//输出结果
document.write(result);
//定义函数
function search(){
let Num1 = 10;
let Num2 = 20;
Num3 = Num1 + Num2
}
</script>
(2)无参有返回值
① 示例:
<script>
//调用函数,结果赋值给result
let result = search();
//输出结果
document.write(result);
//定义函数
function search(){
let Num1 = 10;
let Num2 = 20;
Num3 = Num1 + Num2
return Num3;
}
</script>
(3)有参无返回值
① 示例:
<script>
//声明变量
let NumOne = 10;
let NumTwo = 20;
//调用函数,结果赋值给result
let result = search(NumOne,NumTwo);
//输出结果
document.write(result);
//定义函数
function search(num1,num2){
NumThr = num1 + num2;
}
</script>
(4)有参有返回值
① 示例:
<script>
//声明变量
let NumOne = 10;
let NumTwo = 20;
//调用函数,结果赋值给result
let result = search(NumOne,NumTwo);
//输出结果
document.write(result);
//定义函数
function search(num1,num2){
NumThr = num1 + num2;
return NumThr;
}
</script>
9、拓展
(1)匿名函数
① 语法格式:
let 变量名 = function(){
//函数体;
}
② 示例:
<script>
let demo = function(){
return "这是一个匿名函数";
}
let result = demo();
document.write(result);
</script>
③ 运行效果
(2)箭头函数(es6)
1)常见写法
① 语法格式:
let 变量名 = () => {
//函数体;
}
② 示例:
<script>
let demo = () => {
return "这是一个箭头函数";
}
let result = demo();
document.write(result);
</script>
③ 运行效果
2)一个参数时,省略小括号
① 语法格式:
let 变量名 = 参数 => {
//函数体;
}
② 示例:
<script>
let number = 10;
let demo = num => {
return "传入的参数值为:" + num;
}
let result = demo(number);
document.wrirte(result);
</script>
③ 运行效果
3)没有大括号时,默认return
① 语法格式:
let 变量名 = (参数1,参数2) => 函数体
② 示例:
<script>
let demo = (numOne,numTwo) => numOne + numTwo;
let numberOne = 10
let numberTwo = 20;
let result = demo(numberOne,numberTwo)
document.write(result);
</script>
③ 运行效果
更多函数学习,请参考官方文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function