美文网首页
Var、Let 和 Const的区别

Var、Let 和 Const的区别

作者: 格物致知Lee | 来源:发表于2024-02-20 11:06 被阅读0次

var 的作用域

当 var 变量在函数外部声明时,作用域是全局的。这意味着在函数体外用 var 声明的任何变量都可以在整个窗口中使用。
var 在函数中声明时,它的作用域是在函数体内。这意味着它只能在该函数中被访问。

 var greeter = "hey hi";
 function newFunction() {
       var hello = "hello";
   }

greeter 是全局作用域的,因为它存在于函数之外,而 hello 是函数作用域,所以我们不能在函数之外访问变量 hello。如果我们这样做会得到一个错误,这是由于 hello 在函数之外不可用。

 var tester = "hey hi";
    
    function newFunction() {
        var hello = "hello";
    }
    console.log(hello); // error: hello is not defined

var 变量可以重新声明和更新

这意味着我们可以在相同的作用域内执行此操作,并且不会出错。

    var greeter = "hey hi";
    var greeter = "say Hello instead";
    var greeter = "hey hi";
    greeter = "say Hello instead";

var 的问题

 var greeter = "hey hi";
    var times = 4;

    if (times > 3) {
        var greeter = "say Hello instead"; 
    }
    
    console.log(greeter) // "say Hello instead"

当 times >,greeter 被重新定义为 "say Hello instead"。如果你有意要重新定义 greeter,这不是问题,但当你没有意识到以为 greeter还是 "hey hi"时,它就会成为问题。

引入let的作用

let 变量不能在其作用域内重新声明。

 let greeting = "say Hi";
 let greeting = "say Hello instead"; // error: Identifier 'greeting' has already been declared

但是,如果同一个变量定义在不同的作用域,就不会报错:

 let greeting = "say Hi";
    if (true) {
        let greeting = "say Hello instead";
        console.log(greeting); // "say Hello instead"
    }
    console.log(greeting); // "say Hi"

因为两个实例都被视为不同的变量,因为它们具有不同的作用域。
这样使用 let 时,如果你以前使用过变量名称,则不必担心,因为变量仅存在于其作用域内。

Const

与 let 声明一样,const 声明只能在它们声明的块内访问。
const 不能更新或重新声明

    const greeting = "say Hi";
    greeting = "say Hello instead";// error: Assignment to constant variable. 
    const greeting = "say Hi";
    const greeting = "say Hello instead";// error: Identifier 'greeting' has already been declared

因此,每个 const 声明都必须在声明时进行初始化。
虽然无法更新 const 对象,但可以更新此对象的属性。因此,如果我们这样声明一个 const 对象:

    const greeting = {
        message: "say Hi",
        times: 4
    }
    greeting.message = "say Hello instead";

这三个声明方法有以下区别:

var 声明是全局作用域或函数作用域,而 let 和 const 是块作用域。
var 变量可以在其作用域内更新和重新声明;let 变量可以更新但不能重新声明;const 变量既不能更新也不能重新声明。
它们都被提升到了作用域的顶部。但是,var 变量是用 undefined 初始化的,而 let 和 const 变量不会被初始化。
var 和 let 可以在不初始化的情况下声明,而 const 必须在声明时初始化

相关文章

  • es6

    1、let 和const(定义变量) (1)var 、let 、const的区别 a、作用域区别var 变量声明会...

  • 面试题 var let const的区别 箭头函数和普通函数的区

    var let const 有什么区别 var var声明的变量可进行变量提升,let和const不会var可以重...

  • Android菜鸟学习js笔记 一

    一、var,const,let区别? var 变量,const 常量,let块级变量。

  • let和const

    let/const(常用) let和var 区别 let,const用于声明变量,用来替代老语法的var关键字,与...

  • 总结一下前端常见javascript基础面试题:

    1.var ,let 和const的区别: let和const是es6新增的语法, let和var都可以定义变量,...

  • ES6

    定义变量 let const 和 var 的区别 var 会进行预解析let / const 不会进行预解析预解析...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • js 中 var let const 的区别

    很多人认为 var 和 let const 的区别在于,var 会变量提升,而 let const 不会,虽然可以...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中const,var,let区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

网友评论

      本文标题:Var、Let 和 Const的区别

      本文链接:https://www.haomeiwen.com/subject/qwjbadtx.html