返回顶部
首页 > 资讯 > 前端开发 > VUE >web中let和const的示例分析
  • 341
分享到

web中let和const的示例分析

2024-04-02 19:04:59 341人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关WEB中let和const的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。块级作用域在es6之前我们脑海里应该只存在全局作用域和函数级

这篇文章将为大家详细讲解有关WEB中let和const的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

  1. 块级作用域

es6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢?

  • 避免外层变量被覆盖

var str = "hello";
function d() {
  console.log(str);
  if (false) {
    var str = 'world';
  }
}
d();//undefined

相信很多刚入门的同学看到上述代码会有所不解,其实在全局作用域str变量已经被声明且复制,为什么我函数里面访问不到呢。这里就牵扯到变量提升和函数级作用域的概念。上述代码其实等同于下放代码,当函数被执行的时候生成了一个新的作用域也就是函数作用域,js引擎会把变量声明提到方法体的最前面,大家可以看到只是声明了并没有赋值。所以就是 undefined。

var str = "hello";
function d() {
  var str ;
  console.log(str);
  if (false) {
    str = 'world';
  }
}
d();//undefined
  • 循环变量污染全局变量

var str = 'hello';
for (var i = 0; i < str.length; i++) {
  console.log(str[i]);
}
console.log(i); // 5

很多同学面试的时候可能会遇到上面类似的代码,疑惑点应该在为什么会打印出来为什么会是5,同样的道理代码如同下方。变量会被提升,所以在循环结束之后i就被累加到了5.

var str = 'hello';
var i;
for ( i = 0; i < str.length; i++) {
  console.log(str[i]);
}
console.log(i); // 5

es6的let和const声明符,是不存在变量提升的;同时也只在块级作用域生效。

这个答案应该很明显了吧

var str = "hello";
function d() {
  console.log(str);
  if (false) {
    let str = 'world';
  }
}
d();
  1. 暂时性死区MDN

什么是暂时性死区呢?很多人可能很迷惑。那就听我娓娓道来,如果说我们使用了let和const命令,作用域内会对这些命令声明的变量,在它的声明周期内形成一种封闭作用域。这在语法上,称为“暂时性死区”。代码展示如下:

if (true) {
  tmp = 'abc'; // ReferenceError
  console.log(tmp); // ReferenceError
  let tmp;
  console.log(tmp); // undefined
  tmp = 123;
  console.log(tmp); // 123
}

因为let和const声明是不会被提升的,所以为了保障声明的有效性,js的解释引擎会对变量所处的块级作用域形成一种保护,因此在声明之前使用会有语法错误,是不被允许的。

不能重复声明

function de(){
	var a = "1";
	var a = "2";
	console.log(a);
}
de()//不报错

function de(){
	var a = "1";
	let a = "2";
	console.log(a);
}
de()//报错

function de(){
	let a = "1";
	let a = "2";
	console.log(a);
}
de()//报错

相信大家一般不会声明重复变量编码,所以在这里就不做解释了。如果大家感兴趣可以自己研究或者来现场一起学习

  1. const常量

const声明符的大多特性和let相同,这里就不多做解释了。大家都知道const是声明常量的,一但变量被声明成常量它就不能再被继续修改了。大家要注意的是这里变量不可被修改的是存储的地址值不可被修改,意思就是简单类型的数据是不能修改的。复合类型的数据(主要是对象和数组)const只能保证这个指针是固定的,而这个具体的对象实例包含的属性是可以被修改的。看看代码我们可能会更清楚:

//实例一
const a = "hello";
console.log(a);//"hello"

a = "world";//Assignment to constant variable

//实例二
const obj = {};
obj.name = "jack";
console.log(obj.name);//"jack"

obj = {};//Assignment to constant variable.

//实例三
const a = [];
a.push('Hello');
console.log(a); //[ 'Hello' ]
a.length = 0;
a = ['Dave'];    // Assignment to constant variable.

正如大家所看到的字符串a被复制后就不能在修改,而对象和数组是可以改变它里面的元素的,但是不能给重新复制一个新的对象实例。由此就可以断定const声明出来的变量存的是固定的地址值。

关于“web中let和const的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: web中let和const的示例分析

本文链接: https://lsjlt.com/news/83966.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • web中let和const的示例分析
    这篇文章将为大家详细讲解有关web中let和const的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。块级作用域在ES6之前我们脑海里应该只存在全局作用域和函数级...
    99+
    2024-04-02
  • ECMAScript6新特性之let、const的示例分析
    这篇文章将为大家详细讲解有关ECMAScript6新特性之let、const的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。es6中的新特性之“let”。首先,这...
    99+
    2024-04-02
  • ES6新特性之let和const命令的示例分析
    这篇文章主要介绍了ES6新特性之let和const命令的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:1. let 命令①...
    99+
    2024-04-02
  • JS中的var/let/const和暂时性死区实例分析
    本篇内容介绍了“JS中的var/let/const和暂时性死区实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!js中变量的特征js的变...
    99+
    2023-07-05
  • JavaScript中var和let函数作用域的示例分析
    这篇文章主要介绍JavaScript中var和let函数作用域的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!函数作用域在函数内声明变量时,使用 var 和 let 很相似。...
    99+
    2024-04-02
  • es6中let和const的区别是什么
    这篇“es6中let和const的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • es6中let和const的区别有哪些
    这篇文章主要介绍“es6中let和const的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“es6中let和const的区别有哪些”文章能帮助大家解决问题...
    99+
    2024-04-02
  • ES6中let和const的特性是什么
    这篇文章主要介绍了ES6中let和const的特性是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。let的特性:1.不存在变量提升现象:...
    99+
    2024-04-02
  • JavaScript变量中var,let和const的区别
    目录前言ES5与ES6的区别1. 作用域2. 全局属性3. 变量提升与暂时性死区4. 重复声明let与const的区别1. 常量最佳实践前言 JavaScript中一共有3种用来声明...
    99+
    2024-04-02
  • 浅谈JS中var,let和const的区别
    目录区别1区别2区别3区别4区别5区别6区别7区别1 let和var用来声明变量,const用来声明常量。 变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值。 当声明为对...
    99+
    2024-04-02
  • JavaScript中var,let和const的区别是什么
    这篇文章主要为大家展示了“JavaScript中var,let和const的区别是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中var...
    99+
    2024-04-02
  • web开发中rbac的示例分析
    这篇文章主要为大家展示了“web开发中rbac的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中rbac的示例分析”这篇文章吧。   //登...
    99+
    2024-04-02
  • web中桶排序的示例分析
    这篇文章主要为大家展示了“web中桶排序的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web中桶排序的示例分析”这篇文章吧。桶排序是将待排序集合中处于同一个值域的元素存入同一个桶中,也...
    99+
    2023-06-27
  • web中堆排序的示例分析
    这篇文章给大家分享的是有关web中堆排序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为O(...
    99+
    2023-06-27
  • 一起聊聊var、let以及const的区别(代码示例)
    接下来我们试着修改一下指针,让person指向一个新对象,最后果然报错const person = { name : 'make', sex : '男'}person = { name : ...
    99+
    2023-05-14
    const let var
  • ES6中let变量声明以及特性的示例分析
    这篇文章主要介绍了ES6中let变量声明以及特性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。let 变量声明以及特性声明变量&n...
    99+
    2024-04-02
  • web打印的示例分析
    小编给大家分享一下web打印的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中有个需求是将winform客户端的打印...
    99+
    2024-04-02
  • web理论和HTML标签的示例分析
    这篇文章给大家分享的是有关web理论和HTML标签的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   1,什么是web?   web是运行在internet上最流行...
    99+
    2024-04-02
  • web前端中单例模式的示例分析
    小编给大家分享一下web前端中单例模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单例模式(Singleton Pa...
    99+
    2024-04-02
  • Javascript 中 var 和 let 、const 的区别及使用方法
    目录1.var、let、const简介var 声明let 声明const 声明 总结1.var、let、const简介     &n...
    99+
    2023-01-13
    js中var和 let  const 区别 js中var和 let  const 使用
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作