函数的概念
函数就是代码块,可以多次调用,有独立的局部作用域, 是被设计为执行特定任务的代码块,也用于实现模块化编程。
优点
1.减少冗余代码(可重复使用)
2.使代码结构明晰(模块化)
函数的定义方式
function fn(){
// 函数体内功能代码
}
//或者进行赋值式声明
var fn = function(){
// 函数体内功能代码
};
//这种方式下,虽然这个函数没有名字,但是这个函数赋值给了fn,因此通过变量fn也能调用到这个函数
function---为声明函数的关键字
fn ------是函数的名称,类似于变量的名称
() ------为传入函数的参数,多个参数用逗号隔开
{} ------放置执行的程序块
调用时
//函数名();
fn() ;
例:
// 函数名的规则和变量一样
function fn(){
document.write('');
}
// 函数的调用
//函数名()
fn();
函数中参数的传递
//这里只传递简单类型数据,函数也能进行引用类型数据参数的传递
//形参和实参都可以有多个,用逗号隔开,多个形参和实参之间必须相互一一对应,顺序也得对应
function fn(str1,str2,str3){
document.write(str1+'<br />');
document.write(str2+'<br />');
document.write(str3);
}
fn('1','2','3');
如果形参和实参不一致:
形参的数量>实参的数量,没有对应值的形参为undefined;
形参的数量<实参的数量少,多余的实参会传递到arguments对象中;
形参的数量=实参的数量相等,对应赋值。
关于arguments对象:
arguments能拿到方法里没有写参数却传入了的参数.
例:
function fn() {
// 没有写形参,但是传递了实参
console.log(arguments[0], arguments[1]);//arguments按数组的方式拿到参数
return arguments[0] + arguments[1];
}
console.log(fn(11, 22));
设置参数默认值
给函数的参数设置默认值,代用函数的时候,这个参数是不用传值的.
当然,你也可以在函数内部定义一个局部变量并且赋值。
function fn(name,age=18,info="火星"){
document.write('我的名字叫'+name+',年龄是'+age+',来自'+info)
}
// 有默认值的参数,调用时不用传递参数
fn('李减除',22,"地球");
fn('二狗子');
函数的返回值(return)
return是无条件退出当前方法/函数,并且返回数据,没有数据时则返回undefined
作用:
1.返回函数中的数据
2.终止函数的执行
例:
function fn(){
document.write('今天真快乐<br />');
return '啪,快乐-没了';
document.write('咦嘻嘻,咦嘻嘻嘻');
}
var res = fn();
document.write(res)
1、函数名的命名规范和变量的命名规范一样
2、函数可以放在任何地方,前提必须在同一个页面中才可以调用
3、小括号里面的参数可以写多个起占位作用,可以在函数体内直接当变量使用,称之为:形参;当调用函数传递的真正的数据称之为:实参
全局变量
在函数作用域外部声明的变量
没有加var、let等声明关键字的变量(隐式全局变量)
局部变量
在函数/方法内部,进行声明的变量
区别:
1、全局变量就是在任何地方都可以使用的变量、会一直占用内存存在与当前页面
2、局部变量就是只能在函数内部使用的变量(不考虑闭包),在通常情况下函数执行完毕后会直接销毁局部变量从而释放内存。
变量的查找规则
1.函数内部可以使用函数外部的变量
2.有局部变量就用局部变量,没有局部变量就用全局变量。