翼度科技»论坛 编程开发 JavaScript 查看内容

JS中var let声明范围区别详解

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
var声明提升
  1. console.log(name)  //土豆
  2. var name = '土豆';
复制代码
使用
  1. var
复制代码
声明的变量会自动提升到函数作用域的顶部
  1. function foo(){
  2.     console.log(name);
  3.     var name = "土豆";
  4. }
  5. foo()  //undefined
  6. //等价于
  7. function foo(){
  8.     var name;
  9.     console.log(name);
  10.     name = "土豆";
  11. }
  12. foo(); //undefined
复制代码
  1. console.log(name)  //ReferenceError name没有被定义
  2. let name ="土豆";
复制代码
而使用
  1. let
复制代码
定义的
  1. name
复制代码
不会被提升,报出
  1. ReferenceError
复制代码
的错误;

var可以重复声明同一个变量
  1. var name = "番茄";
  2. var name = "西瓜";
  3. var name = "土豆";
  4. console.log(name);//土豆
复制代码
而使用let重复声明同一个变量会报错。
  1. var name = "土豆";
  2. let name = "土豆";
  3. console.log(name);//'name' has already been declared
复制代码
  1. let name = "土豆";
  2. var name = "土豆";
  3. console.log(name);//Cannot redeclare block-scoped variable 'name'.
复制代码
var全局声明
  1. var name = "土豆";
  2. console.log(window.name);//土豆
  3. let age = "24";
  4. console.log(window.age);  //undefined
复制代码
使用
  1. var
复制代码
定义的变量会被挂载到window上,成为window对象的属性,而使用let不会。

作用域
  1. if(true){
  2.     var name = "土豆";
  3.     console.log(name);
  4. }
  5. console.log(name);
  6. //土豆
  7. //土豆
  8. if(true){
  9.     let age = 24;
  10.     console.log(age);
  11. }
  12. console.log(age);
  13. //24
  14. //undefined
复制代码
使用
  1. var
复制代码
声明的范围是函数作用域,使用
  1. let
复制代码
声明的范围是块作用域。
以上就是JS中var let声明范围区别详解的详细内容,更多关于JS var let声明范围区别的资料请关注脚本之家其它相关文章!


来源:https://www.jb51.net/javascript/291966iw4.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具