美文网首页
07JavaScript入门-预解析

07JavaScript入门-预解析

作者: 东邪_黄药师 | 来源:发表于2020-10-29 08:46 被阅读0次
预解析的相关概念

JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的。JavaScript 解析器在运行 JavaScript 代码的时候分为两步:预解析和代码执行。

  • 预解析:在当前作用域下, JS 代码执行之前,浏览器会默认把带有 var 和 function 声明的变量在内存中进行提前声明或者定义。
  • 代码执行: 从上到下执行JS语句。
    预解析会把变量和函数的声明在代码执行之前执行完成。

变量预解析

    1. 我们js引擎运行js 分为两步: 预解析 代码执行
      (1). 预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前
      (2). 代码执行 按照代码书写的顺序从上往下执行
    1. 预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
      (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
      (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数
fn();
function fn() {
    console.log('打印');
}
//结果:控制台打印字符串 --- ”打印“ 

注意:函数声明代表函数整体,所以函数提升后,函数名代表整个函数,但是函数并没有被调用!

函数表达式声明函数问题

函数表达式创建函数,会执行变量提升,此时接收函数的变量名无法正确的调用:

fn();
var  fn = function() {
    console.log('想不到吧');
}
//结果:报错提示 ”fn is not a function"

解释:该段代码执行之前,会做变量声明提升,fn在提升之后的值是undefined;而fn调用是在fn被赋值为函数体之前,此时fn的值是undefined,所以无法正确调用

相关文章

  • 07JavaScript入门-预解析

    预解析的相关概念 JavaScript 代码是由浏览器中的 JavaScript 解析器来执行的。JavaScri...

  • ES6

    定义变量 let const 和 var 的区别 var 会进行预解析let / const 不会进行预解析预解析...

  • 函数

    预解析: 变量和函数的预解析 预解析把变量的声明提前(但不赋值) 函数名加括号调用函数 预解析把函数声明和调用都提...

  • html

    添加 cdn 预解析,例如预解析图片服务器

  • 预解析

    预解析是什么? 官方式: 预解析就是提前把变量或函数预先解析到它们被使用的环境中 聊天式: 预解析就是浏览器的js...

  • 变量和函数预解析

    变量预解析

  • 预解析预闭包的例子

    预解析、预闭包、自调函数、多赋值

  • javascript项目上很难用到的基础知识

    1.预解析 解析JavaScript代码的时候,首先是执行语法分析,然后才是预解析。语法分析----------分...

  • 预解析

    预解析: 在代码中,首先会预先解析一些(变量定义、函数会预解析); var a=12; js只把var a提到作用...

  • 前端面试题(六)前端性能优化篇

    网络相关 DNS 预解析 DNS 解析也是需要时间的,可以通过预解析的方式来预先获得域名所对应的 IP。 缓存 缓...

网友评论

      本文标题:07JavaScript入门-预解析

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