let和var的区别

letvar 都是用来声明变量的关键字,但在 JavaScript 中它们有几个主要的不同点:

  1. 作用域(Scope):

    • var 声明的变量拥有函数作用域或全局作用域。在函数内声明的变量只在该函数内部访问得到,而在函数外声明的变量全局可访问。
    • let 声明的变量则具有块级作用域(block scope),即变量仅在包含它的代码块({}中间)内可访问。
  2. 提升(Hoisting):

    • var 声明的变量会被提升到其函数或全局作用域的顶部,这意味着你可以在声明变量之前使用它(尽管它会得到undefined的值)。
    • let 声明的变量也在它们所属的作用域顶部有一个概念上的“死区”从块的开始到声明前都不可用。实际上,let 声明不会提升,尝试在声明之前访问变量会导致 ReferenceError
  3. 重复声明(Redefinition):

    • 使用 var 声明变量允许你在相同的作用域中重复声明同一个变量,且不存在报错。
    • 使用 let 声明变量时,在相同的作用域或块中,不能重复声明。
  4. 全局对象属性(Global Object Property):

    • 在全局作用域中用 var 声明的变量会成为全局对象(在浏览器中是 window 对象,在 Node.js 中是 global 对象)的属性。
    • let 在全局作用域中声明的变量不会成为全局对象的属性。
  5. 初始化(Initialization):

    • var 声明的变量在作用域提升时,会自动初始化为 undefined
    • let 声明的变量不会被自动初始化,直到代码执行到它们的定义才开始初始化。

由于 let 提供了更加严格的作用域控制和更可预测的变量生命周期,因此它被认为比 var 更为现代且安全,并且是现在创建变量的首选方法。这些特性尤其在循环和条件语句中非常有用,有助于避免一些常见的编程错误。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇