JavaScript 中 var 与直接赋值的作用域差异解析

作者:半夏

时间:2026-10-21

浏览:302

本文深入解析JavaScript中数据声明的两种方式:使用var关键字声明与直接赋值。通过嵌套函数示例,详细对比了两种声明方式在局部变量与全局变量行为上的关键差异,特别是直接赋值时变量向上层查找并替换同名var变量的机制,帮助开发者准确理解作用域链规则。

文章目录

JavaScript数据声明的两种方式

在JavaScript中,数据的声明主要存在两种常见方式:

第一种是使用var关键字进行显式声明,例如:var num = 10;

第二种则是省略关键字直接进行赋值,例如:num = 10;

var声明与直接赋值的区别

这两种声明方式在特定的执行上下文中会表现出显著的区别:


var data = 10;
function fn01(){
  var data = 100;
  function fn02(){
    data = 1000;
    function fn03(){
      data = 10000;
    }
    fn03();
  }
  fn02();
}
fn01();
console.log(data);

那么,在上述代码逻辑中,最终data的值会是多少呢?

答案确实是10。

局部变量与全局变量的作用域行为

当在函数内部使用var声明变量时,该变量被限定为局部变量;而如果不使用var直接定义变量,它则会成为全局变量。需要注意的是,这个隐式全局变量的行为取决于其定义的位置:它会沿着作用域链向上层查找是否存在使用var定义的相同名称的变量,如果找到,则会覆盖(替换)该外层变量的值;如果未找到任何同名的var声明变量,则会在顶层创建一个全新的全局变量。


var data = 10;
function fn01(){
  data = 100;
  function fn02(){
    data = 1000;
    function fn03(){
      data = 10000;
    }
    fn03();
  }
  fn02();
}
fn01();
console.log(data);

因此,此时的data最终值为10000,你掌握了吗?

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章