当前位置: 首页 > news >正文

国际新闻最新消息十条优化网站方法

国际新闻最新消息十条,优化网站方法,jsp简述网站开发流程,谷歌浏览器chrome官网let ES6中新增了let命令#xff0c;用来声明变量#xff0c;和var类似但是也有一定的区别 1. 块级作用域 只能在当前作用域内使用#xff0c;各个作用域不能互相使用#xff0c;否则会报错。 {let a 1;var b 1; } console.log(a); // 会报错 console.log(b); // 1为什…let ES6中新增了let命令用来声明变量和var类似但是也有一定的区别 1. 块级作用域 只能在当前作用域内使用各个作用域不能互相使用否则会报错。 {let a 1;var b 1; } console.log(a); // 会报错 console.log(b); // 1为什么会有块级作用域 内层变量会覆盖外层变量 比如说一个函数外声明了一个变量count在一个函数体内进行修改然后在if语句中声明了一个相同的变量count。本意是修改外部count内部使用新定义的count但是会自动提升就会发生变化。 var count 1; function f1 () {console.log(count)if (true) {var count 3;} } f1();代码执行时会转为 var count 1; function f1 () {var count;console.log(count);if (true) {var count 3;} } f1(); // undefined循环遍历时会泄露全局变量 当使用for进行循环时定义变量i会在全局中也能获取到。 各个作用域可以任意嵌套 外层作用域不会读取内部作用域的变量各个作用域之间也能定义相同的变量名 块级作用域和函数声明 在ES5中函数声明只能存在顶级作用域和函数中。但是在ES6中支持在块级作用域内声明本作用域外不能引用。 对于声明函数来说浏览器可以使用以下规则 允许在块级作用域内声明函数函数声明类似于var即会提升到全局作用域或函数的头部同时函数声明还会提升到所在的块级作用域的头部 如果确实需要在块级作用域内使用函数可以使用函数表达式的形式而不是函数声明语句。 2. 变量不会自动提升 使用var声明的变量会自动提升会提升到函数、全局作用域的头部。意思就是说先使用后声明不会报错变量值为undefined。 function f1 () {console.log(num);var num 1; }// 当执行时代码会转化成function f1 () {var num;console.log(num);num 1; }这样会导致打印出的结果为undefined而使用let声明的变量没声明前使用会直接报错。 3. 暂时性死区 也就是因为变量不会自动提升只要在当前作用域内使用let声明某个变量就会在当前区域进行绑定在该变量声明之前的区域称之为死区不能使用若使用会报错。 function f1 () {console.log(num);// 声明以上全部为死区let num 1; } 4. 相同作用域不能有相同的变量名 否则会报错 5. do表达式 块级作用域就是以一个花括号中的语句将多个操作封装起来但是没有返回值。 因为在块级作用域中外层作用域是不能使用内部变量可以使用do表达式返回一个结果 let x do {let t 1; } 这样变量x就能获取作用域变量t的值为1; const const声明的变量是只读一个常量一旦声明就不能改变。因为不能改变也就得在声明的时候必须进行赋值否则会报错。 具有的特点和let类似 块级作用域只能在当前作用域内使用变量不会自动提升具有暂时性死区在同一区域不能声明相同的变量名 const本质 const声明的变量并不是值不能改变而是变量指向的那个内存地址是不能改变的对于基本数据类型来说内存地址存的是真实的值所以对于基本数据来说声明后就不能更改。但是对于复杂数据类型来说内存地址保存的是一个指针而指针指向的是真实的数据结构所以只要指针不变数据内容不管怎么变都行。 其实对于一个使用const声明的变量假如想修改数组对象赋值成一个新对象时按正常情况会报错但是如果还是想赋值的话可以使用Object.freeze()方法将对象冻结只是冻结的是对象如果要新增修改属性需要进一步将属性也冻结。 const foo {}; // 冻结重新赋值为空对象 const foo Object.freeze({}); // 常规模式下不起作用 // 严格模式下会报错 // 需要将对象的属性也冻结才能正常 foo.prop 123; 将整个对象以及对象属性冻结 var constantize (obj) {Object.freeze(obj);Object.keys(obj).forEach((key, i) {if(typeof obj[key] object) {constantize(obj[key]);}}) }顶层对象的属性 在浏览器中的顶层对象指定是window对象node中的顶层对象是global对象。 在ES5中全局变量是与顶层对象的属性是等价的。 var a 1; console.log(window.a); // 1但是window对象其实是指的是浏览器窗口对象所以为了区别开在ES6中规定使用let、const声明的全局变量不等于顶层对象的属性但是使用var声明的属性不变。
http://wiki.neutronadmin.com/news/145879/

相关文章:

  • 西城专业网站建设公司哪家好高德地图可以看国外吗
  • 网站设计书的结构河南新冠防控
  • 新华书店网站建设企业做网站属于广告宣传费吗
  • 免费网站如何被百度收录上海高端建站网站
  • 哈尔滨网站建设资海网站备案 信息安全管理协议
  • 文明网站建设情况报告长沙网站开发 58
  • 网站开发所需要的语言百科主题wordpress
  • dede网站地图路径修改广告拍摄
  • 庆阳工程建设网站百度品牌推广
  • 手机网站图片优化太仓市住房和城乡建设局网站
  • vue大型网站开发吗网站代运营价格
  • 营销型网站策划书建设网站的费用如何入账
  • 学生做网站赚钱口碑好的无锡网站建设
  • 网站rar文件湖南招标网官网
  • dw怎么做鲜花网站网站建设需求文章
  • 开一家互联网公司需要多少钱东莞网站优化效果如何
  • 网站运营包括哪些内容有哪些品牌做打底衫的网站
  • 免费网站空间怎么办商丘互联网营销推广
  • wp如何做双语网站外贸建站 智能营销
  • 保山公司做网站什么是网页开发
  • 网站建设国内外研究现状微信公众号登录入口官方
  • 上海市建设小学网站上海微网站建设方案
  • 做什么样的网站seo搜索引擎优化的内容
  • 爱建站吧昆山哪里有做网站的
  • 网站 框架网站飘动广告代码
  • 不要域名做网站搜索引擎营销方法主要有三种
  • 网站说明页内容维护大型门户网站开发
  • 做网站制作外包企业宣传视频
  • 官方网站建设属于什么科目深圳网站建设服务电话
  • 建设网站必备的开发工具二级域名绑定网站