今天是函数基础部分!有点心理准备!
老规矩,先放思维导图!
图片哪里不懂,结合下面文字对应理解!
认识函数
在一个完整的项目中,某些功能会被反复的使用到,那么,我们就将该功能封装进一个函数,当要使用该功能时,直接调用函数即可。
注意:函数是对功能的封装
优点:
1.节省代码,使程序结构简单易懂,提高代码的重复度(重复利用度)
2.如果修改某个功能,调试某个bug,只需要对应修改函数即可
函数概述
结构
function 函数名(参数列表) {
语句
return 表达式;
}
理解
1.function:函数的关键字,说明这是一个函数;
2.函数名:遵守标识符的规则;
3.()参数列表的开始和结束
4.参数列表:是函数从函数的调用者那里获取的数据 可以没有参数
5.{}:函数体的开始和结束;
6.语句:函数封装的功能
7.return 表达式; :return是给函数的调用者返回的数据用,返回的数据为“表达式”的值,返回到调用函数的地方。
return 表达式; 可以不显示的写出来,如果没有,我们默认返回undefined。
注意:函数声明之后不会被执行,只是声明了而一个有该功能的函数。
函数的调用
函数名(参数列表)
函数的调用,可以在函数的声明之前
函数名:具有某种功能的函数的名字
参数列表:是调用者给函数的数据
小例子
编写一个简单的函数
简单的函数:没有参数,没有返回值
introduce();
function introduce() {
console.log("good");
}
函数的调用可以在函数的声明之前
函数的参数
参数可以有多个,多个参数之间用逗号分隔
函数调用的本质就是实参给形参赋值的过程(对应赋值)
小例子
//此时str和age称为形式参数(形参),本质是变量
function myConsole(str, age) {
console.log(str+"he is "+age);
}
//调用函数传的参数称为实际参数(实参),本质是值
//函数调用的本质就是实参给形参赋值的过程(对应赋值)
myConsole("fanfan is a good girl!", 18, "nice", "beautiful");
注意:
函数接收参数没有任何顾虑,可以接收任意多个
函数的返回值
return
function mySum(num1, num2) {
var sum = num1 + num2;
// console.log(sum);//在功能函数中尽量避免打印
return sum;//结束函数的
}
//接收了函数的返回值的值
var ret = mySum(5, 6);
函数的作用域
注意:JS中变量的作用域不是以代码块来区分,而是以函数来区分
变量的作用域:变量能使用的范围
全局变量:
定义位置:所有函数以外定义的变量
作用域:那里都能用(这句话不严谨,有瑕疵)
局部变量:
定义位置:函数内用var定义的变量
作用域:在定义的当前函数内可以使用
var num = 10;
function f(){
num2 = 30;//定义变量,不用var定义的变量默认为全局变量
//函数内部可以访问全局变量
console.log(num);
num++;
var num1 = 20;
console.log(num1);
}
//调用
f();
console.log(num);
//找不到名为num1的变量,此时这个num1是函数f中的局部变量
//console.log(num1);
//
console.log(num2);
变量的提升
当程序进入一个新的函数时,会将该函数中所有的变量的声明放在函数开始的位置。仅仅会提升变量的声明,不会提升变量的赋值。
var num = 10;
function f(){
console.log(num);//undefined// 声明了变量,但是变量没有被赋值,所以结果是undefined;
//var num;
//当局部变量与全局变量同名时,优先使用局部变量。
var num = 20;//num=20
console.log(num);//20
}
f();
//函数外面使用的是全局变量的num;
console.log(num);//10
函数也是一种数据
用变量保存函数,可以通过变量访问函数(调用函数)
function fun(){
console.log("good");
}
//用变量保存函数,可以通过变量访问函数(调用函数)
var f = fun;
//通过变量执行函数(访问函数,调用函数)
//变量名(参数列表);
f();//此时f()与fun()相同
fun();//
//函数可以作为参数传递
匿名函数
匿名函数:没有名字的函数
当匿名函数没有赋值给另一个变量时有两种优雅的用法
1、直接传递给函数
var a = function (){
console.log("sunck is a good man");
};
a();
2、执行某些一次性的代码
function m(mySum, q, w) {
return mySum(q, w);
}
var ret = m(function(a, b){
return a + b;
}, 1, 2);
console.log(ret);
即时函数
即时函数:当函数声明之后立即执行
组成:()()
结构:(匿名函数)(给第一个小括号中的匿名函数传递的参数)
第二个小括号表明函数立即执行,并且给函数传参
(function(str){
console.log(str);
})("good girl");
函数有固有格式,一定要对应,基本的概念就是这样了,网上有很多练习的习题。可以自己找找练习练习。我也给大家找一个典型的,用函数的思想好好练习一样。
网友评论