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

php做网站导购模板哪些网站有友情链接

php做网站导购模板,哪些网站有友情链接,程序员做情侣网站 礼物,新宁县建设局网站let的基本用法 在新的js规范ES6中#xff0c;新增了let 命令#xff0c;用来声明变量。用法类似于var#xff0c;但不同的是所声明的变量#xff0c;只在let 命令所在的代码块内有效。 { let a 10; var b 10; } //ReferenceError: a is not defined console.log(a …let的基本用法 在新的js规范ES6中新增了let 命令用来声明变量。用法类似于var但不同的是所声明的变量只在let 命令所在的代码块内有效。 { let a 10; var b 10; } //ReferenceError: a is not defined console.log(a b); 在之前的js版本中通过var命令声明的变量可以在声明之前使用只不过是undefined console.log(a)// 输出undefined var a 10; 这种现象被称为“变量提升”即变量可以在声明之前使用值为undefined。而通过let声明的变量无法在声明之前使用如果这么做了则会报xx is not defined错误。 而变量声明之前的代码块都被称为“暂时性死区”即变量无法使用的地方。与var声明的全局变量不同let被设计为一种在局部使用的变量声明命令使它所声明的变量更具有可操作性。与Java中声明变量的方式非常类似。 一些隐蔽的死区不容易发现如 function bar(x y, y 2) { return [x, y]; } bar(); 输出如下 for循环中的let变量 for循环的计数器非常适合使用let命令。 for (let i 0; i 10; i) { console.log(i); } 上述代码中i只在for循环体内有效。而且应当注意的是let声明的i在每轮循环都是一个新的变量每一轮都会重新声明 i JavaScript引擎内部会记住上一轮循环的值初始化本轮的变量i 时就在上一轮的基础上进行计算。为什么每轮都会声明变量i这是因为js中的for循环有一个特性设置循环变量的小括号内是父作用域而循环体的大括号内是子作用域这是两个不同的作用域。 不允许重复声明 let不允许在同一个作用域内对同一个变量重复声明。 // 报错 function testRedefined(){ let a 10; let a 20; } testRedefined_2(); // 不报错 function testRedefined_2() { let a 10; { let a 20; console.log(a); // 20 } console.log(a);// 10 } 块级作用域 ES5只有全局作用域和函数作用域没有块级作用域这会造成诸多问题 内层变量可能会覆盖外层变量仅用于计数的循环变量被泄漏为全局变量。 let实际为ES6新增了块级作用域。它允许块级作用域的任意嵌套 {{{{{{let a 33;}}}}}} 不同作用域彼此独立互不影响因此可以在不同的作用域定义相同的变量名。 const命令基本用法 const声明一个只读的常量。一旦声明常量的值就不能改变。 const PI 3.1415; PI // 3.1415 PI 3; // TypeError: Assignment to constant variable. const声明的变量不得改变值这意味着const一旦声明了变量就必须立即初始化不能留到以后赋值如下所示 const PI; // SyntaxError: Missing initializer in const declaration const声明的变量和let有类似的限制命令声明的常量也是不提升同样存在暂时性死区只能在声明的位置后面使用同样在一个相同的作用域内不能重复声明。 const命令的本质 const实际保证的并不是变量的值不得改动而是变量指向的那个内存地址不得改动。 对于简单的数据类型数值字符串布尔值值就保存在变量指向的那个内存地址因此等同于常量。但复合类型的数据主要是对象和数组变量指向的内存地址保存的是一个指针const只能保证这个指针是固定的至于它指向的数据结构是不是可变的就完全不能控制了。这与Java语言中的final修饰的变量非常相似。因此在将一个对象或数组生命为const时应该非常小心。 如果真的希望对象是一个不变的常量我们可以使用Object.freeze()方法下面是一个将对象本身及其属性冻结的通用写法 var constantize (obj) { Object.freeze(obj); Object.keys(obj).forEach( (key, i) { if ( typeof obj[key] object ) { constantize( obj[key] ); } }); }; 顶层对象 顶层对象可以理解为js代码所运行的宿主环境对象。 在浏览器环境中这个顶层对象就是window对象在Node中就是global对象。在ES5中顶层对象的属性就是全局变量通过var声明的变量 window.a 1; a // 1 a 2; window.a // 2 上述代码中顶层对象的属性赋值与全局变量的赋值是同一件事。 这种顶层对象的属性与全局变量挂钩被认为是JavaScript语言最大的设计败笔之一。 ES6为了改变这一点一方面为了兼容规定var命令和function命令声明的全局变量依旧是顶层对象的属性另一方面let命令、const命令、class命令声明的全局变量不属于顶层对象的属性。也就是说ES6开始全局变量将逐步与顶层的属性脱钩。 var a 1; // 如果在 Node 的 REPL 环境可以写成 global.a // 或者采用通用方法写成 this.a window.a // 1 let b 1; window.b // undefined ES5的顶层对象在各种实现里是不统一的因此其本身也是个问题。 -浏览器里面顶层对象是window但Node和Web Worker没有window -浏览器和Web Worker里面self也指向顶层对象但是Node没有self -Node里面顶层对象是global但其他环境都不支持。 同一段代码为了能够在各种环境都能取得顶层对象现在一般是使用this变量但是有局限性。 -全局环境中this会返回顶层对象。但是Node模块和ES6模块中this返回的是当前模块。 -函数里面的this如果函数不是作为对象的方法运行而是单纯作为函数运行this会指向顶层对象。但是严格模式下这时this会返回undefined -不管是严格模式还是普通模式new Function(return this)()总是会返回全局对象。但是如果浏览器用了CSP内容安全政策那么eval、new Function这些方法都可能无法使用。
http://wiki.neutronadmin.com/news/177558/

相关文章:

  • 象山县住房建设局网站南通网站建设公司排名
  • 怎么做产品的网站云南省建设交易中心网站
  • 网站开发上海广州怎么找做网站的公司
  • 成都企业网站建设哪家好行业网站怎么建设
  • 灵宝网站制作工作室网站开发上市公司
  • wordpress 关闭站点如何在工商局网站上做网登
  • 做网站的标准流程手机网站建设制作教程视频
  • 做网站需要人员投资管理公司注册条件和要求
  • 广州天河区做网站阿里云虚拟主机做wordpress
  • 企业网站意思东莞关键词排名快速优化
  • 大理网站推广贵阳做网站好的公司
  • 以下不属于网站建设优化大连建设网官方网站
  • 中小企业网站建设开题报告网页设计代码的基本格式
  • 上城区网站建设价格工厂外包小件加工
  • 织梦 网站教程普通话手抄报文字内容
  • 做最好最全的命理网站网站怎么做电脑系统下载文件
  • 营销网站制作需要多少钱网站开发必会语言
  • 做网站的的报价海口建设局网站
  • 学网站开发如何挣钱购物网站源码下载
  • 衡阳做网站优化做药品网站有哪些内容
  • 建站什么程序好淘宝运营公司哪家好
  • 做网站切图是什么意思怎么制作网站图片不显示
  • 深圳那家做APP网站的最好东莞网页制作与网站设计
  • 网站服务器备案查询免费域名网站
  • 免费1级做爰片在线网站wordpress访问速度突然好慢
  • 购物网站开发教程中文国家高新技术企业认定管理工作网
  • 大连网站开发价格北京网络公司建站
  • 网站 mssql 数据库网站建设工具有哪些品牌
  • 怎么做淘宝 天猫京东网店的网站展示网站建设价格
  • 北京上云网站建设公司2017三五互联做网站怎么样