ES6语法之变量的定义(let和const)

探讨ES6中let与const关键词的特性,包括变量作用域、预解析、重复定义及在循环与条件语句中的应用。理解let如何创建块级作用域,const如何定义不可变变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ES6版本的JavaScript语法是一个非常重要的版本,对于JavaScript的功能上有一个极大的丰富,让JavaScript从弱类型语言提升到了半强类型语言
ES6语法新增的变量的定义:let、const关键词定义变量

let定义变量:
let定义的变量不会进行预解析
let定义的变量与 forEach() 中的变量类似,每次执行都会定义出一个新的,相互之间不影响的变量。尤其是在循环中,for,forEach,for…in都最好使用let定义变量
let不能重复定义变量名称,一个变量名称只能定义一次
let定义的变量如果是定义在 { } 中,只能在 { } 中被执行被调用。在 { } 之外,是不能被调用执行的。{ } 包括 if switch for forEach for…in while function
let在不同 { } 中是不同作用域中定义let 变量,此时变量的名称与其他 { } 中的变量名称或者{ }之外的变量名称是可以重复的

console.log(int1);   //  var 关键词定义的变量可以预解析,结果undefined
console.log(int2);   //  let 关键词定义的变量不能徐解析,结果报错
var int1 = 100;
let int2 = 100;

var定义的是一个变量,后赋值会覆盖之前的数据,最终i的数值是一个数值,是最终循环结束时i的数值

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
</ul>
<script>
//不管点哪个都会输出6,因为i中的数据被覆盖了
var oLis = document.querySelectorAll('li');
	     for(var i = 0 ; i <= oLis.length-1 ; i++){
             oLis[i].onclick = function(){
                 console.log(i+1);
            }
         }
</script>

let与forEach是相同的赋值方式,每次循环都建立一个独立的相互不影响的i 变量,存储对应的数值。每一次点击不同的标签,调用的是不同的i变量,输出的是不同的存储数值

<ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
</ul>
<script>
//点谁就输出谁,因为i中的变量没有被覆盖,点击不同的标签调用的是不同的i变量
var oLis = document.querySelectorAll('li');
	     for(let i = 0 ; i <= oLis.length-1 ; i++){
            oLis[i].onclick = function(){
                console.log(i+1);
            }
        }
</script>

使用var关键词来定义变量,变量名称可以重复
使用let关键词来定义变量,变量名称不能重复,并且只要是已经定义的,不管是var还是let定义的都不能重复

在for循环中使用var定义的循环变量

for(var i = 0 ; i<= 10 ; i++){}
// 在循环外可以调用循环变量
console.log(i);

在for循环中使用let 定义的循环变量

for(let j = 0 ; j<= 10 ; j++){}
// 在循环外不能调用循环变量,会报错
console.log(j);

if判断中使用var定义变量

if(true){
var abc = 'abc';
}
// 在if外,只要执行了就可以调用
console.log(abc);

if判断中使用let定义变量

if(true){
let def = 'def';
}
// 在if外,即使执行了也不能调用
console.log(def);

const定义变量:
在JavaScript中往往管const定义的变量称为常量
const定义的变量不能被重复赋值,数据已经定义,不能更改
const定义的变量名称也不能重复
const定义在{}中,不能在{}外调用,一般使用const定义对象、数组、函数、引用数据类型
const中存储的是引用数据类型的地址,只要地址不改变,可以改变数组、对象中的单元存储的数据

const定义的变量一旦赋值不能改变

const strstr = 100;
// 对const定义的变量重复赋值会报错
strstr = 200;

 if(true){
            const sss = 'sss';
            console.log(sss);
        }
        // console.log(sss);

        const arr = [1,2,3,4,5,6];
        // 给数组中第1个单元修改存储的数据
        // const arr 中存储的数组的地址是不改变的,可以执行的
        arr[0] = '北京';

        console.log(arr);

        // 修改对象中单元存储的数据,不是修改 obj中存储的内存地址,是可以执行的
        const obj = {name:'张三'};
        obj.name = '李四';
        console.log(obj);

总结:
let多用于定义基本数据类型以及循环中
const多用于定义引用数据类型
特点:定义的变量名称不能重复
在 { } 和 循环中定义,只能在 { } 和 循环中使用
let会建立独立的、存储不同的、相互不冲突数据的变量
const定义的变量不能重复赋值,不能修改存储的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值