1.函数的定义
两种方法:function 函数的名称(name age。。。){ return }
函数的结束:以return 或{}结束。
函数的作用:提高复用率,封装(形参,实参,功能的封装)
定义方法
function add(v1,v2){//形参
console.log('add');
v1 = Number(v1);
v2 = Number(v2);
var result = v1+v2;//result 是局部变量
return result;
}
console.log(add);
console.log(add());
console.log(add(3,4));
var n1 = 100,n2 = 200;
console.log(add(n1,n2));//实参
验证是否为成年人
function isCheng(age){
//验证数据合法性
if(typeof age=='number' && age>0 && age<200){
if(age>18){
console.log("是成年人");
}else{
console.log("未成年人");
return;
}
}else{
return;
}
//后续业务处理
console.log("办信用卡");
}
isCheng('abc');
isCheng(300);
isCheng(20);
isCheng(10);
var print = function(){
console.log('打印');
return;//多次return不会报错,但停止 只在第一次就结束。
}
print();
2.函数的使用
//第一种
function test1(){
console.log('test1');
}
function test1(){
console.log('第二次test1');
}
test1();//js执行了第二个值。。。
//等价于。。。var a=10 var a=20 console.log(a);===20
//第二种
var test2=function(){console.log('1111');};
var test2=function(){console.log('2222');};
test2();
//结论一:所有的变量可以重复使用 ,重复定义
//结论二:变量可以提升
console.log(age);//undefined;
var age =20;
console.log(age);//20
//函数变量名的提升
console.log(print);//{function: print}
print();
console.log(foo);//undefined
//foo(); error!
function print(){
console.log('print');
}
var foo = function(){console.log('foo');}
console.log(say);
say();
function
3.函数的调用(实参)
---------函数声明好之后并不会直接允许,需要进行调用才能运行。
调用方法:
-
函数名(实参列表);
-
函数名 .call(执行环境对象,实参列表);
-
函数名 .apply(执行环境对象,实参列表数组);
4.函数的属性
只有在函数内部才能访问的属性。
arguments : 是类数组对象,包含着传入函数中参数。
arguments对象还有一个callee的属性,用来指向拥有这个arguments对象的函数。
this: 指向的是函数赖以执行的环境对象。
//js很少用函数的重载(相同的函数名称,不同的返回值类型,不同的参数个数,不同的参数类型)
function add(){
//验证数据是number
//累加
var sum = 0;
for(var key in arguments){
var value = argument[key];
if(typeof value=='number'){
sum = sum + value;
}
}
return sum;
}//0 600 6
5.函数表达式
-
在o文件内的全局范围内被调用
-
在对象内,对象成员
var p1 = { name:'zs', //sayName:sayName sayName } p1.sayName();//zs var p2 = { }