函数
函数就是具有特定功能的代码段
函数的定义方式
1.1函数的基本写法
定义:function 函数名(){函数体->特定功能代码段}
调用:函数名()
function fn() {
console.log('哈哈哈哈'); //特定功能
}
// 定义一个函数可以调用无数次,并且每次调用都是相互独立的
fn();
1.2表达式写法
定义:var 变量名 = function(){函数体->特定功能代码段}
调用:变量名();
var fn1 = function() {
console.log("呵呵呵呵呵"); //特定功能
}
fn1();
例:求1-100的和
function sum2() {
var total = 0; //用来保存和
for (var i = 1; i <= 100; i++) {
total += i;
}
console.log(total);
}
sum2(); //5050
参数
形参:function 函数名(形参,...){函数体->特定功能代码段}
实参:函数名(实参,...);
function fn1(a,b){
console.log(a,b);
}
fn1(10,20); //10 20
fn1(100,200); //100 200
// 求任意两个数字之和
function sum1(num1,num2){
console.log(num1+num2);
}
sum1(10,20); //30
sum1(100,200); //300
// 求1-n之间的和
function sum2(n){
var total = 0;
for(var i = 1;i<=n;i++){
total += i;
}
console.log(total);
}
sum2(100); //5050
sum2(50); //1275
sum2(1000); //500500
arguments
arguments是函数中独有的,接收实参的集合
function fn(){
console.log(arguments); //类数组集合
}
fn();//Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ]
fn(10,20); //Arguments(2) [10, 20, callee: ƒ, Symbol(Symbol.iterator): ƒ]
fn(10,20,30,100,200);//Arguments(5) [10, 20, 30, 100, 200, callee: ƒ, Symbol(Symbol.iterator): ƒ]
// 求任意多个数字之和
function sum(){
console.log(arguments)
var total = 0;
// 循环arguments集合
for(var i = 0;i<arguments.length;i++){
total += arguments[i];
}
console.log(total);
}
sum(10,20,30);//60
sum(10,20,30,100,200);//360
函数需要注意的问题
函数命名重复,后边覆盖前边的
function fn1(){
console.log("啊");
}
function fn1(){
console.log("哈");
}
fn1(); //哈
形参和实参的关系
形参个数等于实参个数,形参和实参是一一对应进行赋值
形参个数 小于 实参的个数 超出的也没有问题,只是没有形参去接收
形参个数 大于 实参的个数,没有赋值的形参默认是undefined
形参和arguments的关系
arguments接收所有实参的集合,形参的值和集合中的值是对应的,修改了形参的值,集合中的值也会改变,修改了集合中的值,形参的值也会改变