当前位置:网站首页>关于let var 和const的区别以及使用
关于let var 和const的区别以及使用
2022-08-04 05:26:00 【strongest强】
var的说明
1.可以提升自己的变量
例如:
console.log(a);
var a;
a=100;
console.log(a);输出
undefined
100
2.变量的值可以进行更改
例如:
var a=100;
console.log(a);
a=200;
console.log(a);输出:
100
200
3.变量在全局作用域
例如:
var a=100;
console.log(a);
function change(){
if(true){
a++;
}
return a;
}
console.log(change());
输出:
100
101
let的说明
1.不可以提升自己的变量
console.log(b);
let b=100;输出:
Cannot access 'b' before initialization
2.变量的值可以进行更改
let b=100;
console.log(b);
b=200;
console.log(b);输出
100
200
3.块级作用域下的变量,在别的函数作用域下,不可以使用
if (true) {
let b = 100;
console.log(b);
}
console.log(b);输出:
100
b is not defined
const的说明
1.不可以提升自己的变量
console.log(a);
const a=15;输出:
Cannot access 'a' before initialization
2.简单型数据变量的值不可以进行更改;当不涉及地址改变时,复杂型数据型变量的值(如数组,对象等)可以进行更改;当涉及地址改变时,复杂型数据型变量的值(如数组,对象等)不可以进行更改;
例如:
const person=['Wei','Uzi','Xiaohu','Ming'];
console.log(person);
person[1]='Gala';
console.log(person);
const team={
Lpl:'Ig',
Lck:'Skt',
Lec:'Fnc'
}
console.log(team);
team.Lpl='Rng';
console.log(team);
person=['Cryin','Gala','Wei','Xiaohu'];
console.log(person);
team={
Lpl:'fpx',
Lck:'Dk',
Lec:'G2'
}
console.log(team);输出:
["Wei", "Uzi", "Xiaohu", "Ming"]
["Wei", "Gala", "Xiaohu", "Ming"]
{Lpl: "Ig", Lck: "Skt", Lec: "Fnc"}
{Lpl: "Rng", Lck: "Skt", Lec: "Fnc"}
Assignment to constant variable.
Assignment to constant variable.
3.块级作用域下的变量,在别的函数作用域下,不可以使用
例如:
if (true) {
const a = 1999;
}
console.log(a);输出:
a is not defined
关于let的更多应用,比如遍历循环时,可以用let代替var
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<button>搜索1</button>
<button>搜索2</button>
<button>搜索3</button>
<button>搜索4</button>
<script>
var btns = document.querySelectorAll('button');
//错误示例
// for (var k = 0; k < btns.length; k++) {
// btns[k].onclick = function() {
// for (var i = 0; i < btns.length; i++) {
// btns[i].innerText = '搜索' + i;
// }
// btns[k].innerText = '搜索我啊,小笨蛋,(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ'
// }
// }//会先编译for循环,然后找不到btns[k=4]这个按钮,因此会报错
//正确示例
// 1.如立即执行函数
for (var i = 0; i < btns.length; i++) {
(function(e) {
btns[e].onclick = function() {
for (var i = 0; i < btns.length; i++) {
btns[i].innerText = '搜索' + i;
}
btns[e].innerText = '搜索我啊,小笨蛋,(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ'
}
})(i) //i作为实参传递给形参e
}
//2.利用es6新语法,let变量
for (let k = 0; k < btns.length; k++) {
btns[k].onclick = function() {
for (var i = 0; i < btns.length; i++) {
btns[i].innerText = '搜索' + i;
}
btns[k].innerText = '搜索我啊,小笨蛋,(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ'
}
}
</script>
</body>
</html>至于效果,就你们自己点击啦!
最后,感谢大家的观看,点赞收藏支持一下,谢谢各位!
边栏推荐
猜你喜欢

自动化测试的成本高效果差,那么自动化测试的意义在哪呢?

7.13 Day20----MYSQL

8.03 Day34---BaseMapper查询语句用法

7.15 Day21---MySQL----索引

想低成本保障软件安全?5大安全任务值得考虑

Grain Mall - Basics (Project Introduction & Project Construction)

webrtc中视频采集实现分析(一) 采集及图像处理接口封装

7.18 Day23----标记语言

如何将 DevSecOps 引入企业?

Can‘t connect to MySQL server on ‘localhost3306‘ (10061) 简洁明了的解决方法
随机推荐
7、特殊SQL的执行
The cost of automated testing is high and the effect is poor, so what is the significance of automated testing?
Embedded system driver primary [3] - _IO model in character device driver foundation
动态规划总括
Programming hodgepodge (4)
7.16 Day22---MYSQL (Dao mode encapsulates JDBC)
webrtc中的视频编码(一) 视频编码模块轮廓
webrtc中的任务队列TaskQueue
sql server如何得到本条记录与上一条记录的差异,即变动值
将自定义类型作为关联容器的key
MySQL database (basic)
Grain Mall - Basics (Project Introduction & Project Construction)
Plus版SBOM:流水线物料清单PBOM
PHP解决字符乱码问题(多种编码转换)
TensorRT例程解读之语义分割demo
嵌入式系统驱动初级【3】——字符设备驱动基础中_IO模型
JNI基本使用
程序员的财富观
再识关联容器
想好了吗?