let,var,const声明变量

一、let声明变量

ES6新语法,用来声明变量
声明一个块级作用域的本地变量
可以设置初始值
【语法】

        // 声明变量
        let x
        // 声明并设置初始值
        let y = 10
        console.log(y); // 10
        // 重新赋值
        y = "感觉自己萌萌哒"
        //打印结果
        console.log(y); // 感觉自己萌萌哒

【注意点1-不允许重复声明】

   // let不允许在相同作用域内,重复声明同一个变量。

         function func() {
             let a = 10;
             var a = 10;
         }
         function func(){
             let a = 10;
             let a = 1;
         }

【注意点2-有块级作用域】

   // 它的用法类似于var,但是所声明的变量,只能在let命令所在的代码块内有效。
   // 在下面代码块中,分别用let和var声明了两个变量。
       {
            let a = 10;
            var b = 1;
            console.log(a); // 10
            console.log(b); // 1
        }
        //console.log(a); // undefined
        console.log(b); // 1
        // 结果let声明的变量报错,var声明的变量返回了正确的值。
        // 这表明,let声明的变量只在它所在的代码块有效。
        // console.log(a); // a is not defined
        // console.log(b); // 1

【注意点3-不会变量提升】

   // var命令会发生"变量提升",即变量可以在声明之前使用,值为underfined。
   // 这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。
   // 为了纠正这种现象,let命令改变了语法行为,它声明的变量一定要在声明后使用,否则报错
   // var的情况
        console.log(foo);
        var foo = 2; // undefined
        // let的情况
        console.log(bar);
        let bar = 2; // Cannot access 'bar' before initialization(无法在初始化之前访问变量)

【总结】

1.不能重复声明
2.有块级作用域
3.不会变量提升

二、var声明变量

【变量声明var】
var现在基本不用它,但是看到了你得认识他哦
【作用】
1.设置变量
2.和let非常类似
【语法1】

        // 1.声明变量
        var food
        // 2.变量声明+初始值
        var noodle = '重庆小面'
        // 3.重新赋值
        noodle = '兰州拉面'
        console.log(noodle); // 兰州拉面

【注意点1:变量会提升】

        console.log(num);
        var num = 10; // undefined

【注意点2:没有块级作用域】

        for(var i = 1; i < 5; i++){
            console.log('循环内' + i);
        }
        console.log('循环外' + i); // 循环内1
                                  //  循环内2
                                  //  循环内3
                                  //  循环内4
                                  //  循环外5

【总结】

1.变量会提升
2.没有块级作用域

三、const声明变量

【常量声明const】
const声明一个只读的常量,一旦声明,常量的值就不能改变
【语法】

        // 声明并设置初始值
        const y = 10;

【注意点1-基本类型数据无法重新赋值】

        const PI = 3.1415;
        console.log(PI); // 3.1415
        // PI = 3;
        // console.log(PI); // Assignment to constant variable.(赋值给常量变量)

【注意点2-必须设置初始值】

        // const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
        const foo;
        console.log(foo); // Missing initializer.(缺少初始值)
        // 只声明不赋值,就会报错。

【注意点3-有块级作用域】

// const的作用域和let命令相同:只在声明的块级作用域内有效


        if(true) {
            const MAX = 5;
            console.log(MAX);
        }
        // console.log(MAX); // MAX is not defined

【注意点4-不会变量提升】

const命令声明的常量也是不能提升,同样存在暂时性死区,只能在声明的位置后面使用。

        if(true) {
            console.log(MAX); // Cannot access 'MAX' before initialization
            const MAX = 5;
        }

【注意点5-不能重复声明】

         let age = 18;
         const age = 30;

【总结】

1.基本数据类型无法重新赋值(引用类型可以更改内容)
2.必须设置初始值
3.有块级作用域
4.不会变量提升
5.不能重复声明

     // 在const中,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
     // 对于简单类型的数据(数值、字符串、布尔值).值就保存在变量指向的那个内存地址,因此等同于常量。
     // 但对于复合类型的数据(主要是对象和数组),变量指向的是内存地址,保存的只是一个指向实际数据的指针。
     // const只能保证这个指针是固定的(即总是指向另一个固定的地址)。

     // 基本数据类型无法重新赋值
     // 引用类型(对象、数组...),可以更改内容。
     // (注:不能改的是栈)

【语法2】

        const a = [];
        a.push('Hello'); // 可执行
        console.log(a.length); // 1
        a.length = 0; // 可执行
        console.log(a.length); // 0
        a = ['Dave'] // Assignment to constant variable.(分配给常量变量)
        // 上面代码中,常量a是一个数组,这个数组本身是可写的,但是如果将另一个数组赋值给a,就会报错。

总结

以上就是今天要讲的内容,本文简单介绍了let,var,const声明变量的语法及其使用注意事项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: js中,letvarconst都是用来声明变量的关键字,它们的区别如下: 1. var:在ES5中,var声明变量的关键字,它的作用域是函数级别的,即在函数内部声明变量只在函数内部有效,而在函数外部声明变量则在全局范围内有效。在ES6中,var仍然可以使用,但是推荐使用letconst。 2. let:在ES6中,let声明块级作用域变量的关键字,它的作用域是块级别的,即在块内部声明变量只在块内部有效。let声明变量可以被重新赋值,但是不能被重复声明。 3. const:在ES6中,const声明常量的关键字,它的作用域也是块级别的,与let相同。const声明变量不能被重新赋值,也不能被重复声明。常量一旦被赋值,就不能再次修改。 总之,letconst是ES6中新增的关键字,它们的作用域是块级别的,比var更加安全和灵活。而const声明变量是常量,一旦被赋值就不能再次修改。 ### 回答2: JavaScript 是一种动态类型的编程语言,拥有多种变量声明方式,其中包括 letvarconst。下面将对它们各自的特点进行比较。 var 在 ES6 之前,varJavaScript 中最常用的变量声明方式之一。var声明时没有必要显式表明变量类型,在函数内部声明变量的作用域范围会自动提升至函数顶部,并在函数外部声明变量,在全局作用域范围内,都会被认为是 window 对象的属性。 然而,var 存在一些问题:它的作用域是函数级别的。这就意味着,在函数内部声明变量,在函数体内都可访问,但在函数体外却无法访问。同时,如果重复声明同一个变量名,后续声明会覆盖前面的声明。这可能会导致意外的行为。 let ES6 引入了 let 声明变量的方式,这使得变量的作用域在声明的块级范围内。这意味着,let 声明变量声明它的块级作用域范围内可见,但在块级作用域之外不可见。与 var 类似,let 声明变量是可变的,可以在被声明之后被重新赋值。 let 关键字在 for 循环中的使用也是常见的,因为它可以很容易解决传统的 JavaScript 中闭包的问题。在 for 循环中,let 声明变量在每次循环中都有新的实例,因此它不会受到循环外任何其他代码的影响。 const const 关键字声明变量通常被称为常量,常量是一种不能被重新赋值的变量类型。与 let 类似,const 下,变量作用域同样在声明它的块级作用域中。 因此,使用 const 关键字声明变量只能赋值一次,而且这个值在后续代码中也不能改变。但是,如果一个 const 变量是对象类型,那么它里面的属性可以更改。这是因为 const 变量只是防止变量被重新分配,而不阻止变量内部状态的更改。 总的来说,letconst 相比起 var,更加安全和稳定。使用 letconst 可以让代码更清晰和易于理解,也可以避免出现不可预料的问题。在实际的开发环境中,开发人员可以根据实际需求选择使用何种变量类型。 ### 回答3: JavaScript中有四种声明变量的方式:letvarconst和class。其中letvarconst是ES6(ECMAScript 2015)引入的新特性,在ES6之前只有var一种变量声明方式。下面来详细介绍这三种声明方式的区别。 1. var声明 var是ES6之前用来声明变量的方式。使用var声明变量是全局或函数作用域,可以在其声明范围内随意访问。 var a = 'global variable'; function func() { var b = 'local variable'; } console.log(a); // 'global variable' console.log(b); // ReferenceError: b is not defined 2. let声明 let是ES6引入的新的块级作用域声明变量的方式,在声明变量的代码块内生效。 let a = 'global variable'; if (true) { let a = 'local variable'; console.log(a); // 'local variable' } console.log(a); // 'global variable' 在if语句块中使用let声明变量a,因此在if语句块中可以访问到该变量,而在if语句块外部,变量a指向的是全局变量。 3. const声明 const也是ES6引入的一个新的声明变量的方式,与let一样,const声明变量也有块级作用域。 const a = 'constant variable'; a = 'new value'; // TypeError: Assignment to constant variable. const声明变量值不能被修改,因此在上面的代码中尝试修改变量a的值会抛出一个TypeError错误。 总结: var声明变量是全局或函数作用域,在声明范围内随意访问。 letconst声明变量都是块级作用域,在声明变量的代码块内生效。let声明变量可以赋值,而const声明变量值不可修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值