1.函数的作用域
全局作用域
全局作用域声明的变量 ---> 全局变量
局部作用域 函数
局部作用域声明的变量---> 局部变量,局部变量的生命周期和生效的范围,都是声明该变量的函数区域。当函数调用完成以后,就直接销毁
如果全局作用域和局部作用域重名,我们就采用就近原则,当前访问这个变量离哪个作用域更近,就是哪个作用域。
var a = 10;
function sum(){
var a = 5
alert(a); // 5
}
alert(a); // 10
sum(); // 调用后 就销毁
alert(a); // 10
2.函数_return返回值
【注】希望能够在函数外部获取到,函数调用的结果。
【注】如果我们要是外部获取到函数内运行的结果,可以通过return语句跟后面的要返回的值来实现返回值。
【注】return后面所跟表达式的值,就是当前函数调用的值。
【注】函数执行到return语句以后,就执行结束,跟在return后面其他的语句,执行不到。
function add (num1, num2){
// alert (num1 + num2);
return num1 + num2 ;
}
var result = add (3, 4)
alert (result); //undefine
表达式
1、表达式值
2、表达式的功能
函数 分析函数
1、函数值(return后面表达式的值)
2、函数功能(函数名)
3.递归概念:
函数可以自己调用自己,称为递归调用。
【注】我们可以写出递归,但是我们并不知道他是如何得出结果。
【注】递归会在短时间内,使内存剧增。
函数的递归调用
方法:
1、首先去找临界值,既无需计算,获得的值。
2、找这一次和上一次的关系
3、假设当前函数已经可以使用了,调用自身计算上一次的运行结果,再写出这次的运行结果。
特点:
1、必须有参数
2、必须有return
1加到n的和 sum(100) = sum(99)+ 100;
sum(n) = sum( n - 1 ) + n
function sum (n){
if(n == 1){
return 1
}else{
return sum(n - 1) + n
}
}
alert (sum(100))
1、面试官问你递归相关的知识,面试官水平还不错。
2、工作中,一般情况下禁止你使用递归。
通过递归,打印n个hello world
function print(n) {
if(n == 0) {
return;
}else{
document.write("hello,world"<br/>);
return print(n - 1);
}
}