📖 目录

发表于:{{calc_time_ago(blog['b_created_at'])}}
范仁义js课程---48、变量和函数的声明提前?
变量的声明提前:使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),但是如果声明变量时不使用var关键字,则变量不会被声明提前
函数的声明提前:使用函数声明形式创建的函数 function 函数(){},它会在所有的代码执行之前就被创建,使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
一句话总结:
1、变量的声明提前 是怎么回事?
变量的声明提前:使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),但是如果声明变量时不使用var关键字,则变量不会被声明提前
2、函数的声明提前 是怎么回事?
函数的声明提前:使用函数声明形式创建的函数 function 函数(){},它会在所有的代码执行之前就被创建,使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
3、为什么 使用函数表达式创建的函数,不会被声明提前?
因为使用var声明的变量会先声明,但是不会被先赋值,执行到赋值代码的时候才会赋值,所以使用函数表达式创建的函数不会被提升声明
4、为什么使用var关键字定义的变量会声明提前,而没有使用var关键字定义的变量不会被声明提前?
使用var关键字声明的变量,解析器知道这是一个新变量,所以会给你声明提前,防止你在变量声明前使用变量报错。而没有使用var关键字定义的变量,解析器不知道这是一个新变量,所以没办法帮你声明提前。
5、为什么使用 函数声明形式创建的函数 会被声明提前,而使用 函数表达式创建的函数,不会被声明提前?
因为使用 函数声明形式创建的函数,解析器一眼就知道这是一个函数,为了方便你在函数声明前使用函数,所以帮你函数提前声明了,而使用 函数表达式创建的函数,本质上是一个赋值表达式,解析器一开始并不知道这是一个函数,所以没办法帮你 声明提前。
公开 私有