<script>
// 函数:函数就是一个容器里面装的代码,用的时候调用它
// 函数分为:声明式函数、赋值式函数
// 声明式函数:function声明函数的关键字,fn函数名,():括号里面是形参(变量)
// {}:括号里面是代码段
// function fn(){
// // 代码段
// }
// 赋值式函数:fun函数名,function声明函数的关键字,():括号里面是形参(变量)
// ()前面不用再定义函数名字,定义了也没效果,函数名还是var 的变量名
// {}:括号里面是代码段
// var fun = function (){
// // 代码段
// }
// 函数的调用:
// 声明式函数的调用:
// function fn(){
// console.log(1)
// }
// // 声明函数的调用
// fn()
// 赋值式函数的调用:
// var fun = function (){
// console.log(2)
// }
// fun()
// 声明式函数、赋值式函数的区别:声明式函数可以在函数的前面调用,也可以在后面调用
// 赋值式函数只能在函数后面调用
// 声明式函数:
// 得到的结果是:1 1
// fn()
// function fn(){
// console.log(1)
// }
// // 声明函数的调用
// fn()
// 赋值式函数:
// 得到的结果是:Uncaught TypeError: fun is not a function,报错
// fun()
// var fun = function (){
// console.log(2)
// }
// fun()
// 当多个页面用一个函数时,可以把函数写在js文件中,在页面引用js文件.
// 一般引用js文件在head尾中引用,js标签在body的尾部使用
// 函数的参数:形参、实参
// function fn(a,b) {
// console.log(a)
// console.log(b)
// }
// fn(1,2)
// 这里的a,b就是形参,相当于给fn函数内部定义的变量a,b
// 在函数调用的时候,1,2就是函数的实参。
// 函数的实参形参个数一样时,就按照从左到右,把实参赋值给形参
// 函数的形参数大于是参数时:多的形参不被赋值
// function fn(a,b,c) {
// console.log(a)
// console.log(b)
// console.log(c)
// }
// 得到的结果是:1 2 undefined,我们发现c没有被赋值
// fn(1,2)
// 当实参数量多于形参数量时,我们发现多余的实参没有用。
// function fn(a,b) {
// console.log(a)
// console.log(b)
// }
// 得到的结果是1 2
// fn(1,2,3,4,5,6)
// 函数里面的对象arguments,他可以接调用函数的时候的所有实参值
// function fn(){
// 得到的结果是:Arguments(5) [1, 2, 3, 4, 5, callee: ƒ, Symbol(Symbol.iterator): ƒ]
// console.log(arguments)
// 获取实参的长度:得到的结果是:5
// console.log(arguments.length)
// 通过下表获取实参的值
// 得到的是1
// console.log(arguments[0])
// 得到的是8
// console.log(arguments[1])
// 通过for循环遍历(输出每个实参值)实参
// for(var i=0;i<arguments.length;i++){
// 得到的结果是:1,8,3,4,5
// console.log(arguments[i])
// }
// }
// fn(1,8,3,4,5)
// 返回值return:定义一个变量获取一个函数的执行结果.
/*
如果函数内部没有return执行结果,那么函数的执行结果是undefined,在函数
中只有执行return值,才能得到函数执行的结果。console.log()这不是得到结果
*/
/* function fn(a, b) {
// console.log(a)这不是打印结果。
console.log(a)
console.log(b)
// return返回函数最后的结果
var sum = a+b
return sum
}
// 得到函数的结果:3
var res=fn(1, 2) */
// return的另一个作用:终止函数执行,
/* function fn(a,b){
// 得到的结果是:1
console.log(a)
// 得到的结果是:undefined,虽然不执行return后的代码,但是
// var c变量会进行预解析
console.log(c)
return a
// 不执行
console.log(b)
// 预解析
var c
}
var res = fn(1,2)
// 得到的结果是:1
console.log(res) */
// 函数的应用:简化代码,重复利用
// 封装一个函数1-n的和。
/* function fn(n) {
var sum = 0
for (var i = 1; i <= n; i++) {
sum += i
}
return sum
}
var a = fn(3)
var b = fn(100)
// 得到的结果是:6
console.log(a)
// 得到的结果是:100
console.log(b) */
</script>