• 作用域问题


    1、

      var   a=123;

      function  fun(){

        alert(a)  //123    

       }

      fun()

    2、

      var   a=123;

      function   fun(){

        alert(a);  //undefined,作用域:此时的a应该访问函数内声明的a,但是变量声明分两步:变量创建+变量初始化(初始化为undefined).然后才是赋值。因此,此处

                输出undefined(这里面也有个变量提升的问题在里面)

        var a=456;

       }

      fun()

      alert(a)  //123

    3、

      var   a=123;

      function   fun(){

        alert(a);  //123   在函数题内没有找到变量a的声明,于是在外层找,找到外层全局声明var a=123,于是调用函数时,输出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     传参进来后步骤如同题3

        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()  //22

      }

      fn()  //11

    9、

      var   a=12;

      function   fn(){

        console . log(a)  //undefined   同题2

        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   同题2

        var  total=num1+num2;

        console . log(total)   //300

       }

      fn(100,200)

      console . log(total)    //0     是全局的total

    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、

      fun

  • 相关阅读:
    利用服务器实现疫情查询小系统(Web版+APP)
    第五周总结
    第四周总结
    初试python爬取网页数据
    使用ECharts完成数据可视化
    第三周总结
    第二周总结
    求数组中最大子数组的和
    软工第二周博客作业
    MySQL学习笔记(3)——创建、查看、修改、删除数据库
  • 原文地址:https://www.cnblogs.com/GinaHan/p/11449445.html
Copyright © 2020-2023  润新知