H5前端技术分享Web前端之路终端研发部

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

2017-11-11  本文已影响39人  胡哥有话说

变量声明优先级

使用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类型了,所以发生错误
上一篇下一篇

猜你喜欢

热点阅读