文章插图
变量提升(hoisting):函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部 。
JAVAScript 初始化不会提升JavaScript 只有声明的变量会提升,初始化的不会 。
例子:
var x = 5; // 初始化 xvar y = 7; // 初始化 yelem = document.getElementById("demo"); elem.innerhtml = x + " " + y; // 显示 x:5和 y:7y发生了初始化:
elem = document.getElementById("demo"); // 查找元素 elem.innerHTML = x + " " + y; // 显示 x:5 和 y:undefinedvar y = 7;立即调用函数,输出的结果分别是?一、先使用后初始化
var name = 'Tom';(function() { if (typeof name == 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();
文章插图
文章插图
二、作用域发生了变化
var name = 'Tom';(function(name) {if (typeof name == 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})(name);
文章插图
文章插图
三、let 不允许变量提升
var name = 'Tom';(function() {if (typeof name == 'undefined') { let name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();
文章插图
文章插图
欢迎关注,更多分享不错过
【什么是JavaScript的变量提升?】
推荐阅读
- 什么是信息流广告,如何更好的投放呢?
- 如何辨别红茶是否染色干货分享
- 板栗吃了发胖吗热量高吗?板栗吃了有什么好处和坏处
- 贝贝南瓜需要冷藏吗?贝贝南瓜减肥还是增肥
- CAD入门教程
- 冰可乐为什么比常温的好喝?冰可乐放冰箱哪层
- JavaScript setTimeout要理解
- linux怎么查看进程占用端口
- 保质期6个月的牛奶多久算临期?临期牛奶为什么便宜
- 如何确定JavaScript中this的指向?这里有5中常见的分类