• 作用域题总结


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

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

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

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

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

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

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

    1、

      var   a=123;

      function  fun(){

        alert(a)  //123

       }

      fun()

    2、

      var   a=123;

      function   fun(){

        alert(a);  //undefined

        var   a=456;

       }

      fun()

      alert(a)  //123

    3、

      var   a=123;

      function   fun(){

        alert(a);  //123

        a=456;

       }

      fun()

      alert(a)    //456

    4、

      var   a=123;

      function   fun(a){

        alert(a);  //undefined

        a=456;

       }

      fun();

      alert(a)  //123

    5、

      var   a=123;

      function    fun(a){

        alert(a);  //123

        a=456;

       }

      fun(123)

      alert(a)  //123

    6、

      var   a=12;

      function   fn(){

        console . log(a)  //undefined

        var   a=45;

         console . log(a)  //45

       }

      fn()

    7、

      var   a=12;

      function   fn(){

        console . log(a)  //12

        a=45;

        console . log(a)  //45

        }

      fn()

    8、

      function   fn(){

        console . log(11) 

        function    ff(){

          console . log(22)

          }

        ff()  //is  not    defined

      }

      fn()  //11

    9、

      var   a=12;

      function   fn(){

        console . log(a)  //undefined

        return  4;

        var  a=45;

       }

      fn()

    10、

      var   a=45;

      function    fn(a){

        console . log(a)  //undefined

       }

      fn()

    11、

      console . log(total);  //undefined

      var   total=0;

      function  fn(num1,num2){

        console . log(total);  //undefined

        var  total=num1+num2;

        console . log(total)   //300

       }

      fn(100,200)

      console . log(total)    //0

    12、

      console . log(to)    //undefined

      var   to=1;

      function   fn(n1,n2){

        console . log(to)   //1

        to=n1+n2;

        console . log(to)    //30

       }

      fn(10,20)

      console . log(to)    //30

    13、

      function  fn(a){

        console . log(a)  //function

        var   a=123;

        console . log(a)  //123

        function  a(){ }

        console . log(a)  //123

        var  b=function(){ }

        console . log(b)  //function

        function b(){ }

       }

      fn(1)

      注:如果我们声明得变量和函数同名了,在预解释得时候只声明一次

    14、

      function test(a,b){

        console . log(b)  //function

        console . log(a)  //1

        c=0;

        a=3;

        b=2;

        console . log(b);    //2

        function   b(){ }

        function   d(){ }

        console . log(b)    //2

       }

      test(1)

    15、

      function   test(a,b){

        console . log(a)  //function  a

        console . log(b)  //undefined

        var   b=234;

        console . log(b)  //234

        a=123;

        console . log(a)  //123

        function   a(){ }

        var   a;

        b=234;

        var   b=function (){ }

        console . log(a);  //123

        console . log(b)    //function

       }

      test(1)

        注:函数得声明和定义同时发生

  • 相关阅读:
    Sigma Function
    优先队列
    Prime Permutation
    树状数组-----入门级别
    5.2Python函数(二)
    tkinter学习系列(四)之Button 控件
    tkinter学习系列(三)之Label控件
    tkinter学习系列(二)之窗口的设置
    tkinter学习系列(一)开篇之作
    5.1Python函数(一)
  • 原文地址:https://www.cnblogs.com/bokeyanghao/p/10055111.html
Copyright © 2020-2023  润新知