js基础 函数作用域

和变量的作用域类似,函数的作用域也分为局部作用域和全局作用域。
局部作用域:在函数的内部声明的函数,只能在函数内部调用
全局作用域:可以在任意的位置调用。 

一、案例解析

//案例1
//函数的作用域
function fn(){            //fn是全局函数
  console.log('global');
  //outer();                //这里也可以调用outer
};
function outer(){         //outer是全局函数
  console.log('this is outer');
  function inner(){
    console.log('this is inner');
  };
  inner();                //inner函数只能在outer函数中调用,并且这时outer是已经被调用的。
};
fn();
outer();

函数在程序执行前,也存在把函数名提升到最前边。所以在任何的位置都可以定义函数。

fn();
function fn(){
  console.log('hello');    //可以打印hello
};

二、对比函数的名称和函数的调用

function myfun(){
  return 123;
};
console.log(myfun);   //函数名称 myfun ,得到的是函数的结构
myfun();    //函数的调用 myfun ,得到的是函数的返回值

三、函数作用域相关

//-----0级作用域------
var num = 0;
fn1();    
function fn1(){
//-----1级作用域------
  var num = 1;
  fn2();  //fn2只能在所在的作用域中调用
  function fn2(){
//-----2级作用域------
	var num = 2;
	fn3(); //fn3只能在所在的作用域中调用
    function fn3(){
//-----3级作用域------
	  console.log(num);  //num的值会逐级往外找值,知道0级作用域,如果都没有就报错。
	};
  };
};
上一篇: js基础 变量作用域
下一篇: js基础 递归
作者邮箱: 203328517@qq.com