美文网首页
js作用域的一些了解

js作用域的一些了解

作者: 切图仔_Howe | 来源:发表于2018-08-21 15:43 被阅读0次
//js解析的过程:
//1、寻找声明(全局作用域)
//      var x;
//      function a(){}
//2、执行
//      x = 5;
//      a();————>执行到a函数的过程中再重新进行以上两步
//              (1)、寻找声明 var x;(函数作用域)
//              (2)、执行:
//                     alert(x);这个x在函数作用域中存在,并且还没执行到赋值的那一步,那么弹出的东西就是undefined;
//                     x=10;
//      alert(x) 这里的输出是全局变量并且已经赋值 5;
    var x = 5;
    a();
    function a(){
        alert(x);//undefind
        var x = 10;
    }
    alert(x);//5
 a()
 function a(){
    alert(x);//undefind
    var x = 10;
 }
alert(x);//报错,未定义
//先声明函数a,里面的输出在声明之后赋值之前,所以输出undefind;
//第二个输出因为在全局中没有声明,所以是未定义错误
alert(a)//函数块本身

function a() {
    alert("函数")
}

var a = 1;  
alert(a)//1
//先声明函数a,一个是函数a,一个是变量a,因为function比var声明的权重高,所以第一个输出就是函数a本身的代码块
//第二个输出是在变量a赋值的后面,所以自上而下的执行的话,这里输出1;
var a = 5;

function fn() {
    alert(a)//5
}

fn()
//===================================
解析过程

  1.寻找声明

    var a;

    function fn(){}

  2.执行

    a = 5;

    fn()--------------------------------------> 函数

                    1.找声明

                    2.执行

                     alert(a);  他这里没有a 所以去找爸爸要。  a = 5;   所以弹窗是  5

  所以最后结果为  弹窗5

  下面看一下爸爸会不会去找儿子要东西
//====================================

function fn(){
    var b = 5; 
    return b;    
}
fn();
alert(b);//报错,未定义
//======================================
1.寻找声明

    function fn(){}

  2. 执行

    fn()----------------------------------------> 函数

                      1.寻找声明

                        1.var b;

                      2.执行

                        return b;

  alert(b);   //我们看一下返回值是多少   b is not defined   他说b没有被定义,说明父作用域不可以向自作用域去寻找变量。
 fn()
  alert(a)//1
  var a = 0;
  alert(a);//0
  function fn(){
      a = 1;//变量提升,没有用var声明,归到window下面
  }

相关文章

  • 现阶段对于前端成长的困惑

    js权威指南,关于作用域链,全局作用域,函数作用域,基本已经全部了解了。闭包,原型继承,借用函数也很了解了,一些设...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • js 的变量提升和函数提升

    1. 深入理解 js 的变量提升和函数提升 先了解:js没有块级作用域,只有全局作用域,和函数作用域 相同的函数名...

  • JS作用域的练习

    Js作用域练习demo1 Js作用域练习demo2 JS作用域练习demo3 JS作用域练习demo4 JS作用域...

  • 论js里的作用域与闭包

    什么是作用域,相信不少想了解js的小白还是有一定的疑惑的,今天就给大家介绍一下我了解到的js里的作用域 js里作用...

  • js闭包详解

    1.什么是闭包? 要了解什么是闭包,首先你要了解作用域。 js的作用域分两种,全局作用域和局部作用域。 我们知道在...

  • 你不知道的JS-上卷

    作用域整体理解:JS作用域分为函数作用域,全局作用域,with和try catch形成的块级作用域。 JS引擎在编...

  • js作用域的一些了解

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

网友评论

      本文标题:js作用域的一些了解

      本文链接:https://www.haomeiwen.com/subject/xbxjiftx.html