<返回更多

什么是JavaScript的变量提升?

2019-07-18    
加入收藏
什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 

变量提升(hoisting):函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部

JAVAScript 初始化不会提升

JavaScript 只有声明的变量会提升,初始化的不会。

例子:

var x = 5; // 初始化 x
var y = 7; // 初始化 y
elem = document.getElementById("demo"); 
elem.innerhtml = x + " " + y; // 显示 x:5和 y:7

y发生了初始化:

elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x + " " + y; // 显示 x:5 和 y:undefined
var y = 7;

立即调用函数,输出的结果分别是?

一、先使用后初始化

var name = 'Tom';
(function() {
 if (typeof name == 'undefined') {
 var name = 'Jack';
 console.log('Goodbye ' + name);
 } else {
 console.log('Hello ' + name);
 }
})();
什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 


什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 

二、作用域发生了变化

var name = 'Tom';
(function(name) {
if (typeof name == 'undefined') {
 var name = 'Jack';
 console.log('Goodbye ' + name);
 } else {
 console.log('Hello ' + name);
 }
})(name);
什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 


什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 

三、let 不允许变量提升

var name = 'Tom';
(function() {
if (typeof name == 'undefined') {
 let name = 'Jack';
 console.log('Goodbye ' + name);
 } else {
 console.log('Hello ' + name);
 }
})();
什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 


什么是JavaScript的变量提升?立即调用函数中的变量提升问题

 

欢迎关注,更多分享不错过

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>