函数的作用域、返回值以及递归

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);
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容