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

做网站哪一家比较好一起做网站

做网站哪一家比较好,一起做网站,针织厂家东莞网站建设,天津商城网站设计公司作用域 一般认为 JS 中作用域有三种: 全局作用域:一个脚本运行代码的默认作用域;模块作用域:一个模块运行代码的默认作用域;函数作用域:一个函数运行代码的默认作用域。 而由于 let/const 声明变量的作用…

作用域

一般认为 JS 中作用域有三种:

  • 全局作用域:一个脚本运行代码的默认作用域;
  • 模块作用域:一个模块运行代码的默认作用域;
  • 函数作用域:一个函数运行代码的默认作用域。

而由于 let/const 声明变量的作用域,是比函数作用域更加具有块级属性的,所以称块级作用域,任何一个 {} 包围的代码都是一个;函数是特殊的块,脚本是一个大的块,模块是多个脚本的集合,是更大的块。

函数是特殊的块?这是由于,函数体内就算是 var 声明的变量,在外部也无法使用,这和其他 {} 构成的块不同。换句话说,var 只承认函数的块级作用域。

/* let/const 声明变量的作用域 */
{ let a = 1; }
console.log(a)		// 报错,块内的变量在外部失效,报未定义的错{ let a = 1 }
{ console.log(a) }	// 报错,此块内没有变量afor (let i = 0; i < 5; i++) {  }
console.log(i)		// 报错,块内的变量在外部失效,报未定义的错for (var i = 0; i < 5; i++) {  }
console.log(i)		// 5 var 只承认函数的块级作用域

闭包

闭包是 JS 中最强大的特性之一。尽管功能强大,但除了完成特定任务时,才会函数嵌套。

概念

JS 允许函数嵌套,且根据 块/函数 的作用域特性(内部可以访问外部声明定义的变量),将外部函数声明的变量等组成的环境一个内部函数组合封装起来,就构成一个闭包

在下面一个简单的计数器例子中,内部函数 counter 和变量 n/init 组成的环境,构成闭包。

注意:返回的函数不能是 new Function 构造出来的(Function 的传参模式是字符串,指向全局环境,无法访问外部函数环境)。

function MakeCounter(init=0) {let val = init;function counter() { return val++; }return counter
}let ctr = MakeCounter(10)
ctr()		// 10
ctr()		// 11
ctr()		// 12

模拟私有方法

由于闭包环境变量的私有性,容易想到用来模拟一些私有方法。

下面一个相对复杂的计数器例子中:私有属性 privateVal 只能通过公共方法 getValue 进行访问;私有方法 changeBy 也只能通过其他公共方法调用。

function MakeCounter(init) {let privateVal = init;function changeBy(delta) { privateVal += delta; };return {getValue() { return privateVal; },increment() { changeBy(1); },decrement() { changeBy(-1); },plus(b) { changeBy(b); },minus(b) { changeBy(-b); },}
}let ctr = MakeCounter(10);
ctr.value()				// 10
ctr.increment()
ctr.plus(9)
ctr.value()				// 20

多个闭包共用一个环境?

将上面计数器的例子小改一下,在返回的对象里增加一个值。

返回时一个对象,包括一个值和五个函数:

  • 五个函数共用一个环境,影响同一个环境;
  • val,在完成返回后,脱离该环境,独立成为一个变量/属性。
function MakeCounter(init) {let privateVal = init;function changeBy(delta) { privateVal += delta; };return {val: PrivateVal,getValue() { return privateVal; },increment() { changeBy(1); },decrement() { changeBy(-1); },plus(b) { changeBy(b); },minus(b) { changeBy(-b); },}
}let ctr = MakeCounter(10);
ctr.getValue()			// 10
ctr.val					// 10
ctr.increment()
ctr.plus(9)
ctr.getValue()			// 20
ctr.val					// 10
ctr.val = 100
ctr.val					// 100

性能考量

  1. 闭包在处理速度和内存消耗方面对脚本性能具有负面影响;
  2. 闭包特性能达到的效果,使用高级语法也能实现;
  3. 高手总是会闭包。
http://www.yayakq.cn/news/347969/

相关文章:

  • 深圳住房建设局网站南宁市公共资源交易中心网
  • 源码网站php动漫制作技术与动漫设计
  • 陕西网站建设公司找哪家好网站建设中什么意思
  • 电商网站的建设与运营设计一款软件需要多少钱
  • 西安网站制作公司花禾科技广州平台网站建设
  • 怎么可以上传自己做的网站公司视频宣传片
  • 微信小程序一站式开发网站配置服务Wordpress
  • 做网站的公司哪家想找人做网站 要怎么选择
  • 南宁网络推广建站酒店网站html
  • 新乡商城网站建设价格企业计划书模板范文
  • 网上商城网站建设意义百度云电脑网页版入口
  • 昆山 网站设计东莞短视频seo需要多少钱
  • 潼关县住房和城乡建设局网站生产管理软件哪家好
  • 蓟县做网站wordpress 思维导图
  • 有什么网站可以做六级题目嘛女生做sem专员的工作难吗
  • 网站域名中请勿使用二级目录形式wordpress客户案例
  • 建设一个电子文学网站资金多少丽水市企业网站建设 微信营销 影视拍摄
  • 政务信息化建设网站网页ui设计是什么意思
  • 在线做文档的网站网站上线注意
  • 开发商城网站网页制作基本方法
  • 做网站毕业设计存在的问题重庆市建筑工程造价信息网官网
  • c2c网站有哪些江门网站制作系统
  • 百度seo网站优化 网络服务wordpress调用标签代码在线
  • 网站制作费用申请茶庄网站模板
  • 网站建设最新技术及发展趋势wordpress 百度主动推送
  • 手机版网站建设做美团旅游网站多少钱
  • 企业网站开发需要多钱网站建设c云世家网络
  • 消费全返的 微网站开发郑州网站开发公司哪家好
  • 阿里云搭建多个网站东阿做网站推广
  • 涉县移动网站建设价格泰州网站建设优化建站