zoukankan      html  css  js  c++  java
  • 作用域与作用域链的易错题

    代码执行:

    1)预解析

    变量的作用域提升:

            JS执行之前遇到 var function 参数 就会把这些东西提升到代码的最开始位置

           变量放到预解析仓库的时候,JS会主动给变量附一个值:undefined

           函数放到预解析仓库的时候,是一个完整的函数块

           如果函数和变量重名了,那么剔除变量,留下函数

    2)逐行解读

    表达式: + = ++ -- % 参数...

            一组代码的集合,返回一个值。

            a,有副作用的表达式:var a = 1

            b,纯计算的表达式: 3+4

           特征:可以求出来一个值

    表达式可以修改预解析的值!!!

    alert(a);        //function a(){alert(2)}
    var a = 1;
    alert(a);        //1
    function a(){
        alert(2);
    }
    alert(a);        //1
    var a = 3;
    alert(a);        //3
    function a(){
        alert(4);
    }
    alert(a);        //3
    var a = 1;
    function fn1(){
        alert(a);       //undefined 
        var a = 2;
    }
    fn1();          
    alert(a);       //1
    var a = 1;
    function fn1(a){
         alert(a);       //undefined  
         a = 2;
    }
    fn1();
    alert(a);           //1     
    var a = 1;
    function fn1(a){
         alert(a);   //1
         a = 2;
    }
    fn1(a);
    alert(a);       //1  

    博主信息:

    昵称:HamyFrank

    网站:我的网站

    邮箱: xueshuai_12@163.com

    QQ:246776020

    QQ群:1063233592

    WeChat:js_cool_100

  • 相关阅读:
    UPC2018组队训练赛第二场
    杭电多校训练第十场
    socks5 代理
    windows pip 报错Unable to find vcvarsall.bat
    emacs笔记
    homestead oci8
    pyenv install
    chrome 设置sock5代理
    laravel 接收post json
    laravel 使用已有数据库自动创建model
  • 原文地址:https://www.cnblogs.com/xue-shuai/p/12000636.html
Copyright © 2011-2022 走看看