什么是函数
- 函数是可重复执行的代码块,为了完成特定的功能。
为什么使用函数
- 因为一部分代码使用次数或许很多,封装起来,使用时调用即可。
tips:写任何代码,考虑是否某些功能是需要封装的,或是以前封装好的。
面向对象编程是一种编程思想,其特点:封装、继承、多态。
参数
-
参数是参与运算的变量,为了增强函数的功能性、和程序员的交互性、和函数的可扩展性。
-
参数分为形参和实参。
形参:形式上参与运算的变量,无实际的值。为实参占位置(可以理解为函数内部的变量,函数外部无法访问)。
实参:实际参与运算的变量,形参为他占位置,真是参与运算的变量。
tips:
1、把函数定义时候的参数成为形参,把调用时候传递的参数称为实参;
2、实参比形参多,多余的实参被函数忽略掉不影响函数执行;
3、实参比形参少,没有被传递进来的形参的值,在函数内表现为undefined;
返回值
函数程序运行后的结果,外部需要使用的时候,我们不能拿到,需要用到rutern返回运行后的结果;
函数内部rutern返回的值就是返回值;
值得注意的是:函数使用rutern语句后,其函数会在执行完rutern语句后停止并立即退出,也就是说rutern后面的其他代码不会再执行;
函数名、函数体和函数加载问题
函数名是什么
函数名 == 整个函数
function fn(){};
console.log(fn) == console.log(function fn(){});
函数的定义
具名函数: function a(){};
匿名函数:var a = function(){};
变量和作用域
- 变量分为:全局变量和局部变量。
全局变量:又可叫做成员变量,指哪里都能访问到的变量;
局部变量:函数内部的变量,只有函数内部可以访问到;
- 变量提升
JavaScript的函数作用是指在函数内声明的所有变量在函数体内始终是有定义的,也就是说变量在声明之前已经可用,所有这特性称为声明提前(hoisting)
var scope = 'global';
function f(){
console.log(scope);
var scope = 'local';
console.log(scope);
}
// 以上代码在js进行解析的时候会变成以下代码
function f(){
var scope;
console.log(scope);
scope = 'local';
console.log(scope);
}
f();
- 函数声明提升
var getName = function(){
console.log(2);
}
function getName (){
console.log(1);
}
getName();
总结:
-
函数不调用不执行;
-
函数名就等于整个函数;
-
参数相当于局部变量;
-
就近原则使用变量;
-
两个平级的函数中的变量不会相互影响(可以使用同样的形参名);
网友评论