JavaScript函数是指一个特定代码块,可能包含多条语句,可以通过名字来供其它语句调用以执行函数包含的代码语句。
比如我们有一个特定的功能需要三条语句实现:
statement1;
statement2;
statement3;
那么每次想实现这个功能的时候就需要写这三句话,很麻烦,我们可以把这三条语句打包为一个函数
function doSomething(){
statement1;
statement2;
statement3;
}
这样每次想实现功能的时候我们就调用一下函数就可以了,调用函数通过函数名称()的形式调用
doSomething();
声明函数
- 函数声明
function printName(){
console.log('吉软');
}
printName()
- 函数表达式
var printName = function(){
console.log('吉软');
};
printName();
参数
function printName(name){
console.log(name);
}
printName('hunger');
printName('valley);
函数在定义的时候可以写多个参数
function printPersonInfo(name, age, sex){
console.log(name);
console.log(age);
console.log(sex);
}
arguments
在函数内部,你可以使用arguments对象获取到该函数的所有传入参数
function printPersonInfo(name, age, sex){
console.log(name);
console.log(age);
console.log(sex);
console.log(arguments);
console.log(arguments[0]);
console.log(arguments.length);
console.log(arguments[1] === age);
}
printPersonInfo('吉软', 3, 'male');
重载
重载是很多面向对象语言实现多态的手段之一,在静态语言中确定一个函数的手段是靠方法签名——函数名+参数列表,也就是说相同名字的函数参数个数不同或者顺序不同都被认为是不同的函数,称为函数重载
在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的,这是不是意味着JavaScript不能通过重载功能实现一个函数,参数不同功能不同呢?
在JavaScript中,函数调用没必要把所有参数都传入,只要你函数体内做好处理就行,但前提是传的参数永远被当做前几个
function printPeopleInfo(name, age, sex){
if(name){
console.log(name);
}
if(age){
console.log(age);
}
if(sex){
console.log(sex);
}
}
printPeopleInfo('hunger', 3);
printPeopleInfo('hunger', 3, 'male');
返回值
有时候我们希望在函数执行后给我们一个反馈,就像表达式一样,给我们个结果,我们可以通过return来实现
function fn(a, b){
a++;
b++;
return a + b;
}
var result = fn(2, 3);
console.log(result);
声明提前
和变量的声明会前置一样,函数声明同样会前置,如果我们使用函数表达式那么规则和变量一样
console.log(fn) //undefined
var fn = function(){}
如果我们使用函数声明的方式,那么即使函数写在最后也可以在前面语句调用
fn() // "1"
function fn(){
console.log('1')
}
网友评论