JavaScript中var和let声明变量范围有何本质区别?

2026-04-14 09:2710阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计379个文字,预计阅读时间需要2分钟。

JavaScript中var和let声明变量范围有何本质区别?

目录 + var声明提升 + var可以重复声明同一变量 + var全局声明 + 作用域 + var声明提升 + console.log(name) + / / 土豆 var name='土豆'; 使用var声明的变量会自动提升到函数作用域的顶部 function foo() { console.log(name); }

目录
  • var声明提升
  • var可以重复声明同一个变量
  • var全局声明
    • 作用域

var声明提升

console.log(name) //土豆 var name = '土豆';

使用var声明的变量会自动提升到函数作用域的顶部

function foo(){ console.log(name); var name = "土豆"; } foo() //undefined //等价于 function foo(){ var name; console.log(name); name = "土豆"; } foo(); //undefined

console.log(name) //ReferenceError name没有被定义 let name ="土豆";

而使用let定义的name不会被提升,报出ReferenceError的错误;

JavaScript中var和let声明变量范围有何本质区别?

var可以重复声明同一个变量

var name = "番茄"; var name = "西瓜"; var name = "土豆"; console.log(name);//土豆

而使用let重复声明同一个变量会报错。

var name = "土豆"; let name = "土豆"; console.log(name);//'name' has already been declared

let name = "土豆"; var name = "土豆"; console.log(name);//Cannot redeclare block-scoped variable 'name'.

var全局声明

var name = "土豆"; console.log(window.name);//土豆 let age = "24"; console.log(window.age); //undefined

使用var定义的变量会被挂载到window上,成为window对象的属性,而使用let不会。

作用域

if(true){ var name = "土豆"; console.log(name); } console.log(name); //土豆 //土豆 if(true){ let age = 24; console.log(age); } console.log(age); //24 //undefined

使用var声明的范围是函数作用域,使用let声明的范围是块作用域。

以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注自由互联其它相关文章!

本文共计379个文字,预计阅读时间需要2分钟。

JavaScript中var和let声明变量范围有何本质区别?

目录 + var声明提升 + var可以重复声明同一变量 + var全局声明 + 作用域 + var声明提升 + console.log(name) + / / 土豆 var name='土豆'; 使用var声明的变量会自动提升到函数作用域的顶部 function foo() { console.log(name); }

目录
  • var声明提升
  • var可以重复声明同一个变量
  • var全局声明
    • 作用域

var声明提升

console.log(name) //土豆 var name = '土豆';

使用var声明的变量会自动提升到函数作用域的顶部

function foo(){ console.log(name); var name = "土豆"; } foo() //undefined //等价于 function foo(){ var name; console.log(name); name = "土豆"; } foo(); //undefined

console.log(name) //ReferenceError name没有被定义 let name ="土豆";

而使用let定义的name不会被提升,报出ReferenceError的错误;

JavaScript中var和let声明变量范围有何本质区别?

var可以重复声明同一个变量

var name = "番茄"; var name = "西瓜"; var name = "土豆"; console.log(name);//土豆

而使用let重复声明同一个变量会报错。

var name = "土豆"; let name = "土豆"; console.log(name);//'name' has already been declared

let name = "土豆"; var name = "土豆"; console.log(name);//Cannot redeclare block-scoped variable 'name'.

var全局声明

var name = "土豆"; console.log(window.name);//土豆 let age = "24"; console.log(window.age); //undefined

使用var定义的变量会被挂载到window上,成为window对象的属性,而使用let不会。

作用域

if(true){ var name = "土豆"; console.log(name); } console.log(name); //土豆 //土豆 if(true){ let age = 24; console.log(age); } console.log(age); //24 //undefined

使用var声明的范围是函数作用域,使用let声明的范围是块作用域。

以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注自由互联其它相关文章!