基本概念1:let,const,var

2022-01-26  本文已影响0人  娇娇_5038

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);

上一篇下一篇

猜你喜欢

热点阅读