JavaScript的解析顺序对函数的影响

本文探讨JavaScript中声明式和赋值式函数的定义方式及其执行顺序差异。JavaScript在预编译期处理变量声明和声明式函数,而赋值式函数在未定义时执行会导致错误。理解这一解析顺序对于避免运行时错误至关重要。
摘要由CSDN通过智能技术生成

1.函数的定义方式

我们都知道,在JavaScript中有两种定义函数的方式,分别为声明式函数和赋值式函数,但是两种函数在执行顺序却有不同。

比如:

声明式

<script>
    fn();       //      1
    function fu(){
        console.log(1)
    }
</script>

赋值式

<script>
    fn();       // fn is not a function
    var fn = function(){
        console.log(1)
    }
</script>

        在声明式的函数中,函数在未定义之间执行没有任何问题,会在控制台中打印1,但是赋值式的就会报错,会告诉你fn不是一个函数,这是为什么呢?这就要从JavaScript的解析顺序说起。

2.JavaScript解析顺序

JavaScript解析顺序分为预编译期与执行期。

也就是说JavaScript在执行代码之前会先进行预编译,在预编译期JavaScript会对本代码块中所有声明的变量和函数进行预处理,需要注意的是这里面只会将变量进行声明,但不进行初始化赋值,而且这里面处理的函数是声明式的函数。

举个例子:

<script>
    fn();
    var a =3;
    function fn(){
        console.log(1)
    };
    b();
    var b = f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值