关于变量提升的易错点

来源:互联网 发布:string转double java 编辑:程序博客网 时间:2024/05/20 09:27

一个简单的面试题:

var name = 'World!';(function () {    if (typeof name === 'undefined') {        var name = 'Jack';        console.log('Goodbye ' + name);    } else {        console.log('Hello ' + name);    }})();

你觉得应该是输出什么?
这道题涉及到一个知识点:变量提升
在 JavaScript中, functions 和 variables 会被提升。变量提升是JavaScript将声明移至作用域 scope (全局域或者当前函数作用域) 顶部的行为。

var name = 'World!';(function () {    var name;    if (typeof name === 'undefined') {        name = 'Jack';        console.log('Goodbye ' + name);    } else {        console.log('Hello ' + name);    }})();

所以答案是 ‘Goodbye Jack’

原创粉丝点击