zoukankan      html  css  js  c++  java
  • JS预解释的总结

    • 预解释阶段发生在创建了堆内存,让代码执行之前,对当前作用域中带var和function的进行预解释

      • 在浏览器解析执行代码的时候,会提前把带var和function的代码声明或定义,提前放在作用域的最前面执行,也就是浏览器把对这些变量的声明提升到作用域的最前面
      • 函数数据类型会在预解释阶段同时声明和定义
        • 浏览器会将函数的定义以字符串的形式存在一个新的命名空间(堆内存)
      • 在函数执行中,函数的形参也会进行预解释,相当于var 形参
      • 在判断体中
        • 无论判断是否成立,里面的代码都进行预解释,但是不进行定义(包括function)
        • 在新版本浏览器中,只要条件成立,他就会把函数执行(类似于在条件体内进行预解释)
      • 在函数表达式中,等号右边的function不进行预解释
      • 自执行函数不进行预解释,但是在他执行的时候开辟的栈内存进行预解释
      • 在函数执行的时候,return后边紧紧跟着的不进行预解释,但是在return下面的依然进行预解释,但是不执行不赋值
      • 变量名不能重复,变量当前的作用域中,同名的变量声明,会覆盖之前的声明
      • 不带var的变量,不进行预解释,相当于给window动态添加了一个属性
        • 当代码执行到这的时候,才进行创建变量并赋值这个过程,所以在创建之前的调用,会报错,变量 is not defined.
      • 在预解释的时候,同一个名称的变量,如果都是通过var声明的,之前声明过,后边的声明就不重新在声明,如果是function,后边会重新声明和定义,但是后边的定义会覆盖前边的
    • var num = 2;

      • 第一步:声明这个变量(预解释这一步)
      • 第二步:给num这个变量赋值2
    • 函数执行过程

      • 首先进行预解释,形参和函数私有作用域中带var和function进行提升
      • 如果形参在预解释时被function重叠了,那么形参消失,不能使用那个形参接受传入函数的实参
      • 代码开始从上到下执行,给形参赋值,代码接着往下执行
      • return下面的代码不执行了,返回值,返回产出
  • 相关阅读:
    racle SQL性能优化
    Oracle 删除重复数据只留一条
    oracle存储过程常用技巧
    详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
    用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)
    轻松三步教你配置Oracle—windows环境
    非常好的Oracle教程【转】
    Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence
    大数据学习资源汇总
    Index
  • 原文地址:https://www.cnblogs.com/Scar007/p/7640652.html
Copyright © 2011-2022 走看看