变量var声明和函数function声明优先级

变量声明优先级

使用var关键字和function关键字声明的变量,会被JS的解释器优先解析执行,具有优先级

使用var关键字声明变量

1. 看代码说话
    // 在script中直接打印输出变量a
    console.log(a);    // Uncaught ReferenceError: a is not defined

2. 看代码说话
    console.log(a);    // 此处输出 undefined
    var a = 20;        // 赋值操作
    console.log(a);    // 此处输出 20

PS:如果两道问题都OK,请下一页!答错的小伙伴请看开眼!

// 当程序来执行时,首先var关键字声明变量优先执行,进行变量声明,却没有进行赋值
console.log(a);    // 变量a已经声明,但是没有赋值
var a = 20;        // 此处变量a已经进行赋值操作了
console.log(a);    // 20

使用function关键字声明函数

function 关键字声明的函数会被优先执行

1. 看代码说话

    // 输出变量
    var test = 10;

    // 定义函数
    function test () {
        console.log('木木哒..')
    }

    // 调用函数
    test();    

    // 以上代码在执行时会发生情况?
    // 页面显示错误, test is not a function

PS: 小伙伴们,来开眼!

以上代码执行过程:
    1. 执行var test变量的声明
    2. function关键字声明的函数生效,此刻test是一个function
    3. 顺序执行程序,对test进行赋值 test = 10, 类型变为 number
    4. 当调用test函数时,此刻test已经是number类型了,所以发生错误
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容