js变量提升

function testA(keyword) {
    console.log('1-', keyword)
    var keyword = 'zhangsan'
    function keyword() {}
    console.log('2-', keyword)
}
testA(1) 
// 打印结果 
// f keyword() {}
// zhangsan              

解析:
js解析会将声明和赋值分为2部分:
声明部分(函数声明优先级高于变量,所以先执行函数声明;已经被声明过的函数名或变量不能重复声明)
赋值部分(赋值会留在原来位置,所以声明变量会提升,初始化赋值不会提升)
因此1- 打印的是函数(函数声明提升到顶部),2- 打印出张三(后进行赋值zhangsan)

总结:
js变量提升概念=>函数及变量的声明都将被提升到函数的最顶部
变量可以先声明后使用,也可以先使用后声明(注意:注意只有声明变量可以提升,初始化赋值不可以提升)

函数被声明的优先级高与变量
被声明过的函数名或变量名不能被重复声明
变量和赋值语句一起书写时,js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值留在原来位置

你可能感兴趣的:(js变量提升)