JavaScript预解析之变量预解析和函数预解析

 更新时间:2022年07月27日 08:38:45   作者:困困子  
这篇文章主要介绍了JavaScript预解析之变量预解析和函数预解析的相关资料,需要的朋友可以参考下

首先了解预解析之前先看两个问题

1.大家思考下  这个结果会是多少呢?

console.log(num);
var num=10;

结果是 undefined

2.这个输出结果又会是多少呢?

fun();
var fun=function(){
    console.log(22);      
}

显然这个结果报错了。

那究竟为什么会这样执行呢?

1、我们js引擎运行js分为两步: 预解析   代码执行

  • 预解析  js引擎会把js里面所有的var还有function提升到当前作用域的最前面
  • 代码执行 按照代码书写的顺序从上往下执行

2、预解析分为  变量预解析(变量提升)和 函数预解析(函数提升)

  • 变量提升  就是把所有的变量声明提升到当前作用域最前面  不提升赋值操作
  • 函数提升  就是把所有函数声明提升到当前作用域的最前面  不调用函数

那我们第一个问题就相当于执行了以下代码

var num;
console.log(num);
num=10;

第二个问题相当于执行了以下代码

var fun;
fun();
fun=funciton(){
    console.log(22);
}

这下我们就可以看到  声明了一个变量 但是没有给值,接着又调用了fun()这个函数,但是没有这个函数,肯定会报错。
所以函数表达式调用必须要写在函数表达式声明的下面才可以。

相关文章

  • Function.prototype.apply()与Function.prototype.call()小结

    Function.prototype.apply()与Function.prototype.call()小结

    JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时,用 call,而不确定的时候,用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来便利所有的参数
    2016-04-04
  • JavaScript中函数的常用写法及调用方法

    JavaScript中函数的常用写法及调用方法

    这篇文章介绍了JavaScript中函数的常用写法及调用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • JavaScript中使用Math.floor()方法对数字取整

    JavaScript中使用Math.floor()方法对数字取整

    这篇文章主要介绍了JavaScript中使用Math.floor()方法对数字取整,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • 详解JavaScript实现异步Ajax

    详解JavaScript实现异步Ajax

    本文详细讲解了JavaScript实现异步Ajax的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • uniapp返回上一页执行上一页方法解决方案

    uniapp返回上一页执行上一页方法解决方案

    这篇文章主要给大家介绍了关于uniapp返回上一页执行上一页方法解决方案,在UniApp中可以通过uni.navigateBack()方法返回上一个页面,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • JavaScript 基础函数_深入剖析变量和作用域

    JavaScript 基础函数_深入剖析变量和作用域

    下面小编就为大家带来一篇JavaScript 基础函数_深入剖析变量和作用域。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Javascript基础教程之数据类型转换

    Javascript基础教程之数据类型转换

    JavaScript是一种无类型语言,但同时JavaScript提供了一种灵活的自动类型转换的处理方式。基本规则是,如果某个类型的值用于需要其他类型的值的环境中,JavaScript就自动将这个值转换成所需要的类型。
    2015-01-01
  • 运算符&&的三个不同层次

    运算符&&的三个不同层次

    “&&”运算符可以从三个不同的层次进行理解。
    2013-04-04
  • javascript splice数组简单操作

    javascript splice数组简单操作

    javascript splice数组简单操作
    2010-01-01
  • Javascript学习笔记之相等符号与严格相等符号

    Javascript学习笔记之相等符号与严格相等符号

    本文详细介绍了javascript中的相等符号以及严格相等符号,需要的朋友可以参考下
    2014-11-11

最新评论