JS 函数声明和变量声明的提升顺序

现在统一都认为函数声明的提升优先于变量声明的提升,能不能给个例子证明这一观点?


下面的例子,并不能论证这一观点


console.log(person); //ƒ person() { console.log('function')}

function person() {

    console.log('function')

}

console.log(person); //ƒ person() { console.log('function')}

var person = "variable";

console.log(person);//variable

无论是变量声明还是函数声明哪个优先,结果都是一样的;


// 假设变量声明优先,实际代码如下

var person;

function person() {

    console.log('function')

}

console.log(person); //ƒ person() { console.log('function')}

console.log(person); //ƒ person() { console.log('function')}

person = "variable";

console.log(person);//variable


// 假设函数声明优先,实际代码如下

function person() {

    console.log('function')

}

var person;

console.log(person); //ƒ person() { console.log('function')}

console.log(person); //ƒ person() { console.log('function')}

person = "variable";

console.log(person);//variable

请各位大牛给个可以证明的例子,或者上述内容有啥不对的地方,万分感谢


江户川乱折腾
浏览 932回答 3
3回答

莫回无

函数声明提升优先,后面的变量声明都会被忽略,标准就这么写。。。如果变量声明优先,再声明函数的话理应报错的。

至尊宝的传说

console.log(a) // undefinedvar a = 1console.log(a) // 1把这个列子和第一个例子对比,就可以看出优先顺序了。如果变量声明的优先级大于函数声明,那么你第一个例子的第一个打印值,应该是undefined,而不是函数引用。例如是下面这种情况。console.log(person); //undefinedfunction person() {    console.log('function')}console.log(person); //ƒ person() { console.log('function')}var person = "variable";console.log(person);//variable
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript