zoukankan      html  css  js  c++  java
  • 预解释

    1.当浏览器加载HTML页面的时候,首先会提供一个全局JS代码执行的环境 -->全局作用域(后台:global/ 前端:Windows)

    var num = 12;
    var obj = {name: "小明", age: 7};
    function fn() {
        console.log("你好啊!!!");
    }
    console.log(fn); // -->把整个函数的定义部分(函数本身)在控制台输出
    console.log(fu()); //-->把当前函数执行的返回结果(return 后面是什么,返回什么,如果没有 return,默认值是undefined) 在控制台输出

    2.预解释

    - 在当前的作用域中,JS代码执行之前,浏览器首先会默认的把所用代 `var` 和 `function` 的进行提前的声明或者定义

    - 理解声明和定义
        - ` var num = 12;`
        - 声明(declare):`var num;` -->告诉浏览器在全局作用域中有一个 `num` 的变量了
        - 定义(defined):`num = 12;` -->给我们的变量赋值

    - 对于带 `var` 和 `function` 关键字的在预解释的时候还是不一样的

        - `var` --> 在预解释的时候只是提前的声明
        - `function` --> 在预解释的时候提前声明 + 定义都完成了

    - 预解释只发生在当前的作用域下,例如:开始只对 我 `windows` 下的进行预解释, 函数只有执行的时候才会形成一个新的私有的作用域(新的堆内存),之后在对函数中的变量进行预解释

    console.log(num);//-->undefined
          var num = 12;
          console.log(num);//-->12
    
          var obj = {name: "小明", age: 7};
    
          fn(100,200);// -->可以执行,因为在预解释的时候就声明 + 定义了
          // console.log(total);  这个将会报错,因为函数中的预解释是在私有作用域中进行的
          function fn(num1,num2) {
              var total = num1 + num2;
              console.log(total);
          }

    3.JS中内存的分类

    - **栈内存**:用来提供JS代码执行的环境  --->作用域(全局作用域/私有作用域)
    - **堆内存**:用来存储引用数据类型的值 --->对象存储的是属性名和属性值,函数存储的是函数本身(以字符串形式)

                                                                                                                        2019-04-03  

  • 相关阅读:
    pandas --index ,reindex, set_index, reset_index , reindex_like函数 之 reset_index
    pandas --index ,reindex, set_index, reset_index , reindex_like函数 之 reindex
    pandas 合并操作 append处理重复项
    pandas --合并操作concat函数和append
    pandas --合并操作join函数
    pandas 做合并操作-merge函数
    百度地图应用
    jstl 标签 的应用
    Linux 下MySQL 安装与卸载
    Linux 下tomcat的配置
  • 原文地址:https://www.cnblogs.com/nie5135257/p/10651993.html
Copyright © 2011-2022 走看看