作用域面试大纲总结

mac2025-01-05  5

首先我们得知道什么是作用域,什么是作用域链

作用域它是指对某一变量和方法具有访问权限的代码空间,在js中,作用域是在函数中维护。表示变量或函数起作用的区域,指代了他们在什么杨的上下文中执行,亦即上下文执行环境。JavaScript中的作用域只有两种:全局作用域和本地作用域,本地作用于是按照函数来区分的。

说了那么多其实作用域就是浏览器给js的一个生存环境

那再了解下什么是作用域链:

  js中的关键字var和function都可以提前声明和定义,提前声明和定义的放在我们的内存地址(对内存)中。然后js从上到下逐行执行,遇到变量就去内存地址查找是否存在这个变量。有就使用,没有就继续向父级 作用域查找直到window下结束,这种查找机制叫作用域链。

  我们要知道js代码中存在者大量的变量和函数,我们再使用他们的时候一定要知道他们归属谁

以下是我整理的几道作用域题,可以看一下:

1、  var   a=123;  function  fun(){    alert(a)     }  fun()2、  var   a=123;  function   fun(){    alert(a);      a=456;   }  fun()  alert()  //3、  var   a=123;  function   fun(){    alert(a);      a=456;   }  fun()  alert(a)    4、  var   a=123;  function   fun(a){    alert(a);      a=456;   }  fun();  alert(a)  5、  var   a=123;  function    fun(a){    alert(a);      a=456;   }  fun(123)  alert(a)  6、  var   a=12;  function   fn(){    console . log(a)      var   a=45;     console . log(a)    }  fn()7、  var   a=12;  function   fn(){    console . log(a)      a=45;    console . log(a)      }  fn()8、  function   fn(){    console . log(11)     function    ff(){      console . log(22)      }    ff()    }  fn()  9、  var   a=12;  function   fn(){    console . log(a)      return  4;    var  a=45;   }  fn()10、  var   a=45;  function    fn(a){    console . log(a)    }  fn()11、  console . log(total);    var   total=0;  function  fn(num1,num2){    console . log(total);      var  total=num1+num2;    console . log(total)      }  fn(100,200)  console . log(total)   12、  console . log(to)      var   to=1;  function   fn(n1,n2){    console . log(to)       to=n1+n2;    console . log(to)       }  fn(10,20)  console . log(to)    13、  function  fn(a){    console . log(a)      var   a=123;    console . log(a)     function  a(){ }    console . log(a)      var  b=function(){ }    console . log(b)     function b(){ }   }  fn(1)  注:如果我们声明得变量和函数同名了,在预解释得时候只声明一次14、  function test(a,b){    console . log(b)      console . log(a)      c=0;    a=3;    b=2;    console . log(b);        function   b(){ }    function   d(){ }    console . log(b)       }  test(1)15、  function   test(a,b){    console . log(a)      console . log(b)      var   b=234;    console . log(b)      a=123;    console . log(a)      function   a(){ }    var   a;    b=234;    var   b=function (){ }    console . log(a);      console . log(b)       }  test(1)

 

最新回复(0)