美文网首页
基本概念1:let,const,var

基本概念1:let,const,var

作者: 娇娇_5038 | 来源:发表于2022-01-26 15:22 被阅读0次

    1.var 关键字

    1-1 在函数作用域或者全局作用域来用关键字var来声明变量,但是如论在哪里声明,都会被当成在当前作用域顶部声明的变量,这就是我们说的变量提升

    1-2他真正在浏览器运行过程是

    function getValue(condition){

    var value;

    if(condition){

    value='blue';

    return value;

    }else{

    return null;

    }

    }

    2.let关键字  

    主要知识点:

    2-1 用于函数内部内,在字符{和}之前

    2-2 不存在变量提升(因为不存在变量提升,变量设置在函数的顶部)

    2-3 同一块级不能重复命名

    2-4 存在于块级作用域中

    为了解决关键字变量var 带来的变量提升问题,es6引进了let

    块级作用域用于声明在指定块的作用域之外的无法访问的变量。块级作用域(亦成为词法作用域)存在于

    函数内部内

    块中(字符{和}之间的区域)

    let的声明用法和var相同。用let代替var来声明变量,就可以把变量的作用域限制在当前代码块中,因为let声明不会被提升,因此开发者通常将let声明放在封闭代码块的顶部,以便整个代码块都可以访问

    2-1-1 let关键字声明变量,不会升至函数顶部,执行流离开if语块,value立刻被销毁,

    如果condition 为false,则永远不会声明并初始化value

    eg:

    2--1-2 禁止重声明

    假设作用域已存在某个标识符,此时再使用let关键字声明他就会抛出错误

    在这个事例中同一作用域,变量count被声明了两次,所以会报错

    eg    

    var count=0;

    let  count=0;

    //Identifier 'count' has already been declared (标识符已存在)

    但如果在当前作用域嵌套另一个作用域便可在内嵌的作用域中用let声明同名变量,

    因为此处let在if块内声明新变量count,因此不会抛出错误

    示例代码如下

    var count=0;

    if(condition){

    //不会抛出错误

    let count=40;

    }

    3.const声明

    主要知识点

    1. 跟let一样适用于块级作用域内

    2.同一块级作用域不能重复命名

    3.常量必须初始化

    4.常量一旦声明,不能让修改绑定,但是可以修改值

    es6引进const关键字。使用const关键字声明常量,值一旦声明不可更改。因此通过

    counst声明的常量必须进行初始化。

    eg:

     const  maxItems=30;

     const name;//Missing initializer in const declaration 常量声明缺少初始化

    3-1-1sconst和let声明的都是块级作用域标识符,所以常量只在当前代码块有效,一旦执行到块外会立即执行销毁。常量也不会被提升到作用域顶部

    eg:

    if(condition){

              const maxItems=5;

    }

    console.log(maxItems)//(此处不能访问maxItems)报错condition is not defined

    3-1-2 与let相似不能重复声明

    var message='Hello';

    let age=25;

    const message='Goodbye';//此处会报错'message' has already been declared

    const age=20;//此处会报错 'age' has already been declared

    3-1-3 const 声明不能修改绑定,但是可以修改值

    const person = {

                name: 'zuojiaojiao'

     }

    person.name = 'jiaojiao1'//可以修改值

    console.log(person)

    person = {

    }//此处会报错 Assignment to constant variable.

    function getValue(contiue) {

                if (contiue) {

                    console.log(typeof value);//抛出错误值未被定义

                    let value = 'blue';

                }

                console.log(typeof value)//undefined

            }

            getValue(true);

    相关文章

      网友评论

          本文标题:基本概念1:let,const,var

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