JavaScript 变量作用域和函数声明示例解析
JavaScript 变量作用域和函数声明示例解析
以下代码展示了 JavaScript 中变量作用域和函数声明的交互作用:
var x = 30;
function test() {
alert(x);
var x = 10;
alert(x);
x = 20;
function x() {};
alert(x);
}
test();
正确答案:B. undefined, 10, 20
解析:
- 变量提升: 在 JavaScript 中,变量和函数声明会被提升到函数作用域的顶部。因此,
var x = 30;实际上被提升到test()函数的顶部,但没有初始化。 - 函数声明优先级: 函数声明优先于变量声明。因此,
function x() {};优先于var x = 10;被提升到test()函数顶部。 - 局部变量覆盖: 当
test()函数执行时,alert(x);输出undefined,因为x尚未被初始化。然后,var x = 10;创建一个局部变量x,并将其值设置为10,因此第二个alert(x);输出10。 - 函数覆盖: 最后,
x = 20;将局部变量x的值设置为20,因此第三个alert(x);输出20。
总结:
本示例演示了 JavaScript 变量作用域和函数声明的复杂交互作用。理解这些概念对于编写清晰、高效的 JavaScript 代码至关重要。
原文地址: https://www.cveoy.top/t/topic/pJ9C 著作权归作者所有。请勿转载和采集!