一、函数的认知
给代码块取个名字,以后每次调用函数时,这个代码块就重复运行,相互独立 ,不调用就不会运行
function fn () {
console.log(100)
}
fn();
fn();
(一)参数
如下面的a、b就是参数,将10、20和100、200传给a、b;
function fn (a,b) {
var re=a+b
console.log(re)
}
fn(10,20);
fn(100,200);
1、没有参数:()里面没有任何参数
function fn () {
console.log("fn被调用了一次,后面还有100行代码 是以后学习中的业务代码")
}
fn();
fn();
2、一个参数:()里面只有一个参数
function request (url) {
console.log("去网络请求这个网址 然后得的数据:"+url)
}
request("www.baidu.com");
request("hqyj");
3、多个参数:()里面有几个参数,不限于只有一个
function sum (a,b,c) {
console.log(a+b+c)
}
sum(10,20,30);
sum(100,200,300);
4、调用时传入少了:函数后面的参数是a,b两个参数,但是在调用函数传入值时只传入了一个值10或者200,因此属于传入少了,不会影响程序正常执行,但是可能会运行出提前设定之外的效果
function fn (a,b) {
//var a=10
// var b;
console.log(a+b)
}
fn(10);//程序会正常执行 不过可能会运行出提前设定之外的效果
fn(200);
针对这一点的解决方案是:设定默认值
①解决方案一
function fn(a,b){
a=a||0;
b=b||0;
console.log(a,b);
console.log(a*b);
}
fn(10);
②解决方案二
function fn(a,b){
if(a==undefined){a=0};
if(b==undefined){b=0};
console.log(a,b);
console.log(a*b);
}
fn(10);
③解决方案三
function fn (a=0,b=0) {
console.log(a,b);
console.log(a*b);
}
fn(10);
5、调用时传入多了:()中的参数只有a、b两个,但是调用函数时传入的参数是多个,那么多传入的数据会在函数内部中的默认关键字arguments中存起来,但是不会使用;传入多个数值对函数逻辑没有任何影响,知识会影响程序的性能
function fn (a,b) {
console.log(a*a)
console.log(arguments)//实参数据
console.log(arguments[1])
}
fn(20,30,20,30,405)
fn(1,23,3,5)
(二)返回值
函数调用完毕后,一定会有一个返回值,可以是undefined或者函数等;函数内部遇到return就会停止下来,产生函数结果;
function fn (a) {
return 100+a;
}
var re=fn(20);
console.log(re);//120
var re2=fn(200);
console.log(re2);//300
function fn(a){
console.log(66666666666);//66666666666
return 100
console.log(111111111111)
return a+100
}
console.log(fn(90));//100