变量let和var的区别

在较旧的JavaScript,使用关键字var来什么变量,而不是let。

var现在开发中一般不再使用它,只是我们可能再老板程序中看到它。

let为了解决var的一下问题。

var声明:

  1.可以先使用 在声明(不合理)

  2.var声明过的变量可以重复声明(不合理)

  3.比如变量提升,全局变量,没有块级作用域等等。

详细介绍:

重复声明

var:使用“var”可以重复声明同一个变量而不会报错,只会覆盖之前的值。

let:使用“let”在同一作用域内重复声明同一个变量会导致SyntaxError语法错误

作用域

var:使用“var”声明的变量存在函数作用域的特性,即变量的可见性受限于声明该变量的函数内部。如果在函数内部使用“var”声明变量,那么这个变量在整个函数中都是可访问的。

let:使用“let”声明的变量存在块级作用域的特性,即变量的可见性仅限于声明该变量的块内部。块级作用域可以是if语句、for循环、while循环、函数等大括号“{}”内部。

变量提升

var:使用“var”声明的变量在执行上下文被创建时会被提升到当前作用域的顶部,这就是所谓的变量提升。这意味着在声明变量之前就可以访问该变量,但其值为undefined。

let:使用“let”声明的变量不会发生变量提升,如果在声明之前访问该变量,会导致一个ReferenceError错误

函数作用域(function scope)是指在 JavaScript 中使用 “var” 声明的变量的作用域范围。具体来说,在函数作用域内部声明的变量只在该函数内部可见和访问,而在函数外部是无法访问这些变量的。

什么是函数作用域:

举个例子,看下面这段代码:

function greet() {
    var message = "Hello, World!";
    console.log(message);
}

greet();
console.log(message);

在这个例子中,变量 message 是在函数 greet() 内部使用 “var” 声明的,因此它的作用域仅限于函数 greet() 内部。在调用 greet() 函数时,会正确输出 “Hello, World!”,但在函数外部尝试访问 message 变量时,会导致 ReferenceError 错误,因为在函数外部无法访问函数内部的变量。

函数作用域中声明的变量在函数执行完毕后仍然存在,但只能在函数内部被访问,外部无法直接访问这些变量。这样有助于避免变量在不同函数之间互相干扰,提高了代码的封装性和可维护性。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值