ES6属性之:letvarconst

it2024-05-15  51

ES6简介

ES:全称:ECMAScript ,它是由ECMA国际标准化组织规定的以相脚本语言的标准化规范。 ES6实际是一个泛指,泛指2016年之后的版本

let

let 是ES6 新增的用于声明变量的关键字

let 声明的变量只在所处于的块级有效

if (true) { let a = 10; } console.log(a); //会显示:a is not defined

let关键字声明的变量才具有块级作用域,使用var声明的变量不具有块级作用域特性

let 变量特点 :

防止循环变量成为全局变量不存在变量提升暂时性死区,块级作用域里面定义的变量不会受到外面的影响 var num = 10 if (true) { console.log(num); //未定义使用会报错 let num = 20; }

经典面试题

//此题关键点在于i是全局变量,函数执行时输出的都是全局作用域下的值 var arr = []; for (var i = 0; i < 2; i++) { arr[i] = function() { console.log(i); } } arr[0](); //输出2 arr[1](); //输出2 //i为块级作用域,每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的 //函数执行时输出的是自己上一级(循环体产生的块级作用域)作用域下的值 var arr = []; for (let i = 0; i < 2; i++) { arr[i] = function() { console.log(i); } } arr[0](); //输出0 arr[1](); //输出1

const

作用:声明常量,常量就是值(内存地址)不能变化的量

特点:

具有块级作用域 //const if (true) { const b = 10; } console.log(b); //会显示:b is not defined 使用const声明常量必须赋初始值常量赋值后,值不能修改 1.基本数据类型一旦用const声明后值就不能更改. 2.复杂数据类型数据结构内部的值可以更改,但数据值本身不可更改

let const var区别:

var:函数级作用域,变量提升,值可更改 let:块级作用域,不存在变量提升,只能先声明再使用,语法更加严格,值可更改, const:块级作用域,不存在变量提升,只能先声明再使用,语法更加严格,值不可更改

最新回复(0)