js部分总结

1.如何区分私有变量和全局变量?

        1)在全局作用域下声明(预解释的时候上)的变量是全局变量

        2)在“私有作用域中声明的变量”和“函数的形参”都是私有变量

        在私有作用域中,我们代码执行的时候遇到了一个变量,首先我们需要确定它是否为私有的变量,如果是私有的变量,那么和外面的没有任何的关系;如果不是私有的,则往当前作用域的上级作用域进行查找,如果上级作用域也没有则继续查找,一直找到window为止 ...(作用域链)


    2.当函数执行的时候(直接目的:让函数体中的代码执行),首先会形成一个新的私有的作用域,然后按照如下的步骤执行:

        1)如果没有形参,先给形参赋值

        2)进行私有作用域中的预解释

        3)私有作用域中的代码自上而下执行

        ...

        4)函数形成一个新的私有的作用域保护了里面的私有变量不受外界干扰(外面修改不了里面的),私有的也修改不了外面的-》闭包


        闭包:闭包是一种机制,函数执行的时候形成了一个私有的作用域,保护里面的私有变量不受外界干扰。


       


        //预解释的时候不管你的条件是否成立,都要把带var的进行提前的声明

        //window的预解释:var num; -> window.num

        if(!('num' in window)){

            var num = 12;

        }

        console.log(num)  // undefined


    3.执行函数定义的那个function在全局作用域下不进行预解释,当代码执行到这个位置的时候定义和执行一起完成了

    // 自执行函数:定义和执行一起完成了,不进行预解释

    (function(num){})(100)

    ~function(num){}(100

    +function(num){}(100)

    -function(num){}(100)

    !function(num){}(100)

   

    4.函数体中的return下面的代码虽然不在执行了,但是需要进行预解释;return后面跟着的都是我们的返回值,所以不进行预解释。

        function fn(){

            console.log(num); // undefined

            return function(){

               

            };

            var num = 10;

        }

        fn();


    5.在预解释的时候,如果名字已经声明过了,不需要重新声明,但是需要重新赋值;在JS中如果变量的名字和函数的名字重复了,也算冲突

    预解释:var fn; window.fn; fn = xxxfff000 window.fn = xxxfff000


        var fn = 10;

        function fn(){

            console.log('ok');

        }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 容易犯的错误原因 认为是split()使用排除法:split分割字符串;reverse反转数组;join将数组转成...
    ktHub阅读 1,312评论 1 3
  • 2018web前端最新面试题总结 一、Html/Css基础模块 基础部分 什么是HTML?答:​ HTML并不是...
    duans_阅读 4,718评论 3 27
  • #前端基础 # ## JavaScript基础 ## ###渲染机制与变量 ### script代码为什么放到bo...
    hmg阅读 344评论 1 1
  • JavaScript ECMAScript(ES):规定了一些基础核心的知识(变量、数据类型、语法规范、操作语句等...
    小K强阅读 528评论 0 0
  • js数据类型 Number 1.包括:-1,0,1,0.111,NaN2.NaN:(Not a Number)可以...
    DoEmpty阅读 407评论 0 1

友情链接更多精彩内容