变量提升
一、变量为什么会提升?
JavaScript代码是先编译再执行,即分为编译阶段和执行阶段。编译阶段需要将变量声明提升到作用域顶部,以确保后续代码能正常编译。

执行上下文是 JavaScript 执行一段代码时的运行环境,它定义了变量或函数有权访问的其他数据,决定了它们各自的行为。
每个执行上下文都有三个重要属性:
变量对象
作用域链
this 指向
二、同名变量和同名函数
后面的覆盖前面的
console.log(myName)
var myName = 'yuyy';
var myName = 'rory';
showName();
function showName() {
console.log("Tom");
}
function showName() {
console.log("Jerry");
}
输出:(浏览器环境运行,node.js运行报错)
rory
Jerry
三、变量与函数同名
变量和函数同名,不论谁先声明,函数始终覆盖变量
showName();
function showName() {
console.log('Tom');
}
var showName = 'Jerry';
showName();
var showName = 'Jerry';
function showName() {
console.log('Tom');
}
showName();
function showName() {
console.log('Tom')
}
var showName = function() {
console.log('Jerry')
}
以上3段代码输出都是:
Tom
Last updated