当前位置: 首页 > Web前端 > HTML

ES6基本介绍之let和const

时间:2023-04-02 17:34:06 HTML

|杰斯克森来源|达达前端小酒馆01首先?欢迎大家学习ES6基础let和const的基础知识。初始ECMAScript6。ESMAScript与JavaScript的关系:ES是JS的标准(ES是ECMAScript的缩写)JS是ES的实现部分ESMAScript的历史:ES2于1998-06年发布,ES3于1999-12年发布,并成为js的通用标准2007-10ES4Draftrelease2008-07提取一小部分ES4内容作为ES3.12009-12ES5release学习let和const关键字,块级作用域let和块级作用域变量声明:var,直接用window.location.href===location.href//truelet和var的主要区别let声明的变量只在当前块级作用域内有效,let声明的变量不能重复声明,没有促进变量。02ES6之前的作用域全局作用域函数作用域eval作用域块级作用域是一对花括号{...}if(){}switch(){}for(){}try{}catch(err){}{}块级作用域可以嵌套{{}}表示一个对象,而不是块级作用域:varda={name:dada,}let只在当前块级作用域起作用{vara=1;让b=2;}console.log(a);console.log(b);{//1让a=1;{console.log(a);//1让b=2;}控制台日志(二);//错误}for(leti=o;i<3;i++){};console.log(i);使用let或const声明的变量不能重新分配给let并且不存在的变量可以提升到控制台.log(da);varda='dada';console.log(dada);letdada='dada';temporarydeadzonevarda='1';{console.log(da);varda='2';}console.log(da);letda='1';{console.log(da);letda='2';}console.log(da);03面试题:生成10个按钮,点击弹出1-10:vari=0;for(i=1;i<=10;i++){(function(i){varbtn=document.createElement('button');btn.innerText=i;btn.onclick=function(){alert(i)};document.body.appendChild(btn);})(i);}for(让i=1;i<=10;i++){varbtn=document.createElement('button');按钮。内文=我;按钮。onclick=function(){警报(i);};文档。身体。appendChild(btn);}const常量,不可更改的常量必须赋值,否则报错类似let不能重复声明,没有变量提升,常量只在当前块级作用域内有效。常数是不可改变的吗?常量一旦声明就不能改变?当常量是引用类型时,解决引用类型不能保证不可变。不能保证immutableconst只能保证地址的指针不改变,不能保证地址上的值不能改变。如何防止常量为引用类型时被修改Object.freeze();//在冻结es6之前声明常量varDa='123';Object.defineProperty();Object.seal();//防止对象被hasOwnProperty()本身的属性seal()扩展,defineProperty()、hasOwnperty()、freeze()Object.freeze()方法可以冻结一个对象。无法再修改冻结的对象;当对象被冻结时,对象不能添加新的属性,不能删除已有的属性,也不能修改对象已有属性的可枚举性、可配置性和可写性。属性,并且不能修改现有属性的值。freeze()返回与传递的参数相同的对象。constobj={prop:42};Object.freeze(obj);obj.prop=33;//在严格模式下抛出错误console.log(obj.prop);//预期输出:42hasOwnPreperty()消除原型链如果为真,则表示它不是原型属性。Object.defineProperty()方法会直接在一个对象上定义一个新的属性,或者修改一个对象已有的属性,并返回这个对象。obj在其上定义属性的对象。prop要定义或修改的属性的名称。descriptor要定义或修改的属性描述符。Object.seal()方法密封对象,防止添加新属性并将所有现有属性标记为不可配置。constobject1={property1:42};Object.seal(object1);object1.property1=33;console.log(object1.property1);//预期输出:33deleteobject1.property1;//sealedconsole.log(object1.property1);//预期输出:33推荐阅读1.你对this、new、bind、call、apply了解多少?那我告诉你2.为什么要学JavaScript设计模式,因为它是核心3.一篇文章带你走进JavaScript闭包和高级函数4.大厂HR面试ES6深度面试题知识点5.一个JavaScript技术栈拿你了解继承和原型链。当前文章内容涉及前端和PHP知识点。有兴趣的可以关注一下。很荣幸被你发现。真是有见地!感谢您的关注。在以后的日子里,希望大家一直默默支持我,我会努力写出更多优秀的作品。我们一起成长,从零开始学习编程,将Web前端领域、数据结构与算法、网络原理,通俗易懂的呈现给小伙伴们。分享Web前端相关的技术文章、工具资源、精选课程、热点资讯。如本账号内容有问题(例如:涉及版权或其他问题),请及时联系我们进行整改,我们会尽快处理。请喜欢它!因为您的认可/鼓励是我写作最大的动力!欢迎来到达达的CSDN!这是一个有品质有态度的博客