javascript 第三篇(入门篇)
1.9.1 变量和作用域(函数中的变量需要函数执行后才能使用) 8
2.5.3 加载函数的时候,只加载函数名,不加载函数体 11
2.5.6 两个评级的函数中的变量不会相互影响(可以使用同样的形参名) 11
第1章 函数基础
1.1 函数概述
1.1.1 什么是函数
函数就是可以重复执行的代码块。
1.1.2 为什么要用函数
因为一部分代码使用次数可能会很多,所以封装起来,需要的时候调用就可以了。
案例:求和;(总是求和)
1.2 函数的定义
关键字function。
function 函数名 () { 程序 }
1.3 参数
参与运算的变量。
为什么要设置参数?为了增强函数的功能性,和程序员的交互性,和函数的可拓展行。所以我们增加了参数这个概念。
1.3.1 形参
形式上参与运算的变量,无实际值,为实参占位置,就像一`个躯壳一样。(可以理解为函数的内部变量外部无法访问)
1.3.2 实参
实际参与运算的变量。形参为他占位置,真实参与运算的变量。
1.4 返回值
有return函数就有值;没有return函数就没值;
函数程序运行后的结果外部需要使用的时候,我们不能直接给与,需要通过return返回。
总结:函数内部,return后面的值就是返回值;
作用:函数执行后剩下结果就是返回值。
函数执行完毕,会不会留下点儿什么,取决于有没有返回值
var temp = 函数名() = (功能)+ 该函数的返回值;
1.4.1 注意
1. 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
2. 如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
3. 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值 也是:undefined
4. 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退 出,也就是说return后面的所有其他代码都不会再执行。
1.5 案例
1、求圆的周长和面积
2、求2个数中的最大值,求3个数中的最大值
3、求一组数中的最大值和最小值
4、翻转数组,返回一个新数组
5、对数组排序,从小到大
6、求阶乘
7、求1!+2!+3!+....+n!
8、判断一个数是否是素数
1.6 函数名、函数体和函数加载问题(重点记忆)
1、函数名是什么
函数名 == 整个函数。
function fn(){alert(1)};
console.log(fn) == console.log(function fn(){alert(1)});
2、函数加载问题
JS加载的时候,只加载函数名,不加载函数体。所以如果想使用内部的成员变量,需要调用函数。
1.7 实验:
1、求斐波那契数列Fibonacci中的第n个数是多少?
1 1 2 3 5 8 13 21...
2、输入某年某月某日,判断这一天是这一年的第几天?(闰年)
(四年一闰,百年不闰,四百年在闰)
1.8 函数定义
1.8.1 函数声明(自定义声明)
function f(a,b) {
return a + b; }
console.log(f(5,6));
1.8.2 函数表达式
var myFun = function (a,b){
return a + b;
}
console.log(myFun(6,7));
1.9 变量和作用域(隐式全局变量和变量声明提升)
1.9.1 变量和作用域(函数中的变量需要函数执行后才能使用)
一、全局变量(成员变量)
哪里都可以访问到的变量。
(进入script立即定义的变量和没有var的变量)
二、局部变量
函数内部的变量,只有函数内部可以访问到。
(函数内部用var定义的变量和形参)
1.9.2 隐式全局变量
隐式全局变量就是隐藏的全局变量不好被发现。
function fn(){
var a = b = c = 1; // b和c就是隐式全局变量
}
注意:
function fn(){
var a = b = c = 1; // b和c就是隐式全局变量(等号)
var a = 1; b = 2; c = 3; // b和c就是隐式全局变量(分号)
var a = 1 , b = 2 , c = 3; // b和c就不是隐式全局变量(逗号)
}
1.9.3 变量声明提升(出现原因:预解析)
函数中,定义变量在使用变量之后。
值提升变量名,不提升变量值,容易出现undefined。计算后形成NaN。
function fn(){
// var aaa;
console.log(aaa);
var aaa = 1;
}
//提前看一眼这个习惯叫什么呢? 预解析!
//变量声明提升:在预解析的时候,成员变量和函数,被提升到最高位置,方便其他程序访问。
//变量声明提升特点:成员变量只提升变量名,不提升变量值。但是,函数是所有内容全部提升。(function直接定义的)
//函数范围内照样会出现变量声明提升
//什么情况容易出现变量声明提升:使用变量在定义变量之前。
1.10 小知识
1.10.1 函数不调用不执行
1.10.2 函数名就等于(整个函数)
1.10.3 加载函数的时候,只加载函数名,不加载函数体
1.10.4 参数相当于局部变量
1.10.5 就近原则使用变量
1.10.6 两个平级的函数中的变量不会相互影响(可以使用同样的形参名)
第2章 函数高级
2.1 匿名函数(了解)
定义:匿名函数就是没有名字的函数。
作用:
1.不需要定义函数名的时候。(群众演员没必要起名,百万雄师下江南)
2.书写起来更简便。
匿名函数的调用有三种方法:
一、直接调用或自调用。(function(){alert(1)})()
二、事件绑定。
三、定时器。
2.2 函数是一种类型(了解)
2.3 函数作为参数(了解)
2.4 递归(理解)
递归:就是函数自己调用自己。(懂得)
必须有跳出条件。