一、function定义
1.函数:指用来封装一项专门任务的步骤清单代码段(块)
①其目的是为了解决程序中的代码冗长问题,提高程序的重复利用率
②一个功能,可以分解成若干的函数,提高程序的开发效率以及程序代码的利用率
2.函数语法:
①关键字定义法
function 函数名([参数变量列表]){
函数体; // 封装的任务步骤代码段
[return 返回值;] //函数的执行结果! []中的内容可有可无
}
function poem(){
console.log("床前明月光");
console.log("疑似地上霜");
console.log("举头望明月");
console.log("低头思归乡");
}
poem(); //函数的调用
②通过变量来定义函数
var fun=function(){
函数体;
[return 返回值;]
}
var show=function(){
console.log("我是通过变量定义的函数");
}
console.log(show); //输出的是一个函数
show(); //调用函数
③对象方式: var fun=new Function()
3.函数名
函数名:通过保存地址指向函数定义的一个变量(保存的地址是函数对象的引用地址),需要注意的是
①函数仅定义未调用时,函数并不会执行,也不会读取内部代码
②函数调用时,程序开始读取函数内部代码,并执行
③函数可以在程序的任意位置调用,调用方式:
函数名([参数值列表])
参数变量:是指当一个函数需要传入一定数据才能体现函数的完整功能时声明的变量
function chifan(who,what){
console.log(who+"买"+what); //1
console.log(who+"做"+what); //2
console.log("吃饭"); //3
console.log("刷碗"); //4
return "香喷喷的"; //5
}
console.log(chifan("Rose","宫保鸡丁")); // 1 2 3 4 5 |返回值也会输出
chifan("Jack","鱼香肉丝"); // 1 2 3 4 |返回值不会输出
return返回值:指当函数调用的结果需要被程序员使用时,才需要有return返回值
return有两大作用:返回结果、终止函数
二、变量的作用域(***)
1.全局作用域(window)
<1>全局变量:放在window中的变量
(全局变量可在程序的任意位置进行访问和修改)
2.局部作用域(在函数调用时才动态创建的作用域)
<1>局部变量:参数变量、函数内部var的变量
<2>变量的使用规则:调用时,如果局部有,就不用全局的变量,局部变量在调用后会随着局部作用域一同销毁!
var k1=10;
function rose(k1){
K1--;
console.log(k1);
}
function jack(){
k1--;
console.log(k1);
}
console.log(k1); //10 -- 函数未调用,直接输出全局变量k1=10
rose(5); //4 -- 函数rose被调用,传入参数变量,优先使用局部变量,递减后k1=4
conosle.log(k1); //10 -- 依然输出全局变量k1=10
jack(); //9 -- 并为传参,使用全局变量k1,递减后k1=9
console.log(k1); //9 -- 任意位置都能对全局变量进行修改,输出修改过后的k1=9
3.默认提升功能
<1>函数的默认提升功能:不管函数写在什么位置,都会提到最高
函数定义方式:
①声明方式: function 函数名(){}
② 直接量方式:var fun=function(){}
③对象方式: var fun=new Function()
****声明提前:(只针对声明方式的函数)
<2>变量的默认提升功能:声明变量,会提到上面,赋值会留在原地
**注意:函数的声明要比变量的声明更置顶!
function fun(){
return 1;
}
console.log(fun()); //2
function fun(){
return 2;
}
console.log(fun()); //2
var fun=100; //给变量fun赋值为number 100
console.log(fun()); //报错! fun is not a function