函数:函数就是最基本的一种代码抽象的方式
1.定义函数
function abs(x){
if(x>=0){
return x;
}else{
return -x;
}
}
//function 指出这是一种函数定义
//abs是函数名称
//(x),是函数参数,多个参数用逗号分开
//{...}是函数体
//匿名函数的形式,function(x)是匿名函数,这个匿名函数赋值给了变量abs,两种函数的定义方式等价
var abs = function(x){
if(x>=0){
return x;
}else{
return 0;
}
}
2.调用函数
//函数示例
function abs(x){
if(x>=0){
return x;
}else{
return -x;
}
}
abs(10); //10, 调用的常见形式
abs(10, "demo");//10, 传入多于要求的参数也没有关系,函数不处理多余的参数
abs(); //NaN; 此时传入的参数为undefined,因此结果为NaN
//避免传入的参数undefined,需要进行如下的判断
var abs = function(x){
if(typeOf x !== 'number'){
throw 'not a number'
}
else if(x>=0){
return x;
}else{
return 0;
}
}
3.arguments
arguments是js的关键词,表示传入的参数。
//argument是表示传递进入的参数
function foo(x) {
alert(x); // 10,是第一个参数
for (var i=0; i<arguments.length; i++) {
alert(arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);
//函数不定义参数,也可以拿到参数的值,一般来说argument用来判断参数的个数
function abs() {
if (arguments.length === 0) {
return 0;
}
var x = arguments[0];
return x >= 0 ? x : -x;
}
abs(); // 0
abs(10); // 10
abs(-9); // 9
4.rest
rest表示除了已经定义的参数之外的参数,用argumens可以获取,但是用rest更方便
//使用"...rest"表示
function foo(a, b, ...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
foo(1);
// 结果:
// a = 1
// b = undefined
// Array [],如果rest没有参数值,不返回undefined,而是空数组
5.return的用法
注意1:函数体中存在return,返回return后面的值,若不存在return,函数返回undefined.若直接return;返回undefined.
//不存在return语句,返回undefined
function abs(x){
//没有return语句,默认是return undefined
x;
}
abs(1); //undefined
//存在return语句,返回return后面的结果
function abs(x){
return x;
}
abs(1); // 1
注意2:js会在代码后面直接补全分号,因此return多行,需要用{}
function abs(){
return
{name: "jayzen"};
}
//上面的代码自动转换为
function abs(){
return;
{name: "jayzen"};
}
//修改代码
function abs(){
return{
{name: "jayzen"};
}
}