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

南通网站定制搭建深圳优化网站方法

南通网站定制搭建,深圳优化网站方法,网络文化经营许可证申请条件,南宁大型网站推广公司1. var声明及变量提升机制 提升(Hoisting)机制:通过关键字var声明的变量,都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…

1. var声明及变量提升机制

提升(Hoisting)机制:通过关键字var声明的变量,都会被当成在当前作用域顶部生命的变量。

function getValue(condition){if(condition){var value = "blue";console.log(value);}else{// 此处可访问变量value,其值为undefinedreturn null}// 此处可访问变量value,其值为undefined
}

JavaScript引擎会将上面的getValue函数修改为下面这样。变量value的声明被提升至函数顶部,初始化操作依旧保留在原处执行。为此,ES6引入了块级作用域来强化对变量声明周期的控制。

function getValue(condition){var value;if(condition){value = "blue";console.log(value);}else{return null}
}

 

2. 块级声明

块级声明用于声明在指定块的作用域之外无法访问的变量。

块级作用域存在于:

  • 函数内部
  • 块中(‘{}’之间的区域)。

2.1. let声明

  • 用法同var相同,但声明不会被提升;
  • 禁止在同一作用域内重声明;
  • 如果当前作用域内嵌另一个作用域,便可在内嵌的作用域中用let声明同名变量。
function getValue(condition){if(condition){var value = "blue";console.log(value);}else{// 变量value在此处不存在return null}// 变量value在此处不存在
}
/**禁止重声明*/var count = 30;
// 抛出语法错误
let count = 40;if(condition){// 不会抛出错误let count = 40;
}

2.2. const声明

  • 声明的是常量,必须初始化;
  • 禁止在同一作用域内重声明;
  • 不可再赋值(常量对象可修改值;
  • const声明对象时,不允许修改绑定,但可修改值。
// 有效的常量
const maxItems = 30;
// 语法错误,未初始化
const name;if(condition){const cnt = 40;
}
// 在此处无法访问cntlet age = 20;
// 抛出错误,重声明
const age = 15;const pos = 30;
// 抛出语法错误,不能重新赋值
pos = 35;const person = {name: 'Nicholas'
};
// 可以直接修改对象属性的值
person.name = 'Fleur';
// 直接给person赋值,即要改变person的绑定,会抛出语法错误。
person = {name: 'DpprZ'
}

 

3. 临时死区(Temppral Dead Zone, TDZ) 

由于 console.log(typeof value) 语句会抛出错误,因此用 let 定义并初始化变量 value 的语句不会执行。此时的 value 还位于 JavaScript 社区所谓的“临时死区”。TDZ 通常用来描述 let 和 const 的不提升效果。

if(condition){console.log(typeof value);  // 引用错误let value = 40;
}
console.log(typeof value);  // "undefined"
if(condition){let value = 40;
}

 JS引擎扫描代码发现变量声明时:

  • var声明:将他们提升至作用域顶部。
  • let和const声明:将声明放在TDZ中。访问TDZ中的变量会触发运行时错误。只有执行过变睾声明语句后,变量才会从TDZ中移除,然后方可正常访问。

 

4. 循环中的块级作用域绑定

for循环中通过let将计数器变量限制在循环内部。

for(var i = 0; i < 10; i++){// 更多代码
}
// 在这里仍然可以访问变量i
console.log(i); // 10for(let i = 0; i < 10; i++){// 更多代码
}
// i在这里不可访问,抛出错误
console.log(i); 

 

5. 循环中的函数、let声明、const声明

let funcs = [];
for(var i = 0; i < 10; i++){funcs.push(function(){console.log(i)})
}
/*
每个funcs[]中都存在一个函数:ƒ (){ console.log(i) }
*/
funcs.forEach(function(func){func(); // 10个10
})

因为这里的循环里的每次迭代同时共享着变量i,循环内部创建的函数都保留了对相同变量的引用。
解决该问题的两种方案:

在循环中使用立即调用函数表达式(IIFE),以强制生成计数器变量的副本。

let funcs = [];for(var i = 0; i < 10; i++){funcs.push(function(value){return function(){console.log(value)}})
}funcs.forEach(function(func){func(); // 0 1 2 3......9
})

用let声明计数器:每次迭代循环都会创建一个新变量 i,并以之前迭代同名变量的值将其初始化。所以循环内部创建的每一个函数都能够得到属于自己的 i 的值。let 声明在循环内部的行为是标准中专门定义的,它不一定与let的不提升特性相关,理解这一点至关重要!

let funcs = [];for(let i = 0; i < 10; i++){funcs.push(function(){console.log(i)})
}funcs.forEach(function(func){func(); // 0 1 2 3...... 9
})
  •  let声明:声明计数器、for-in、for-of
  • const声明:生命循环内不改变的值、for-in、for-of

 

6. 全局块作用域绑定

var、let、const在全局作用域中的行为区别:

var会创建一个新的变量作为全局对象(浏览器环境中的window对象),会无意中覆盖已存在的全局属性。

let、const会在全局作用域下创建一个新的绑定,但该绑定不会添加为全局对象的属性。换句话说,不能覆盖只是遮蔽。 


文章转载自:
http://dinncobile.ydfr.cn
http://dinncopreservatize.ydfr.cn
http://dinncomitospore.ydfr.cn
http://dinncoscarification.ydfr.cn
http://dinncokersey.ydfr.cn
http://dinncocodify.ydfr.cn
http://dinncosocker.ydfr.cn
http://dinncogrindingly.ydfr.cn
http://dinncomonk.ydfr.cn
http://dinncoastigmatism.ydfr.cn
http://dinncoisolation.ydfr.cn
http://dinncogedankenexperiment.ydfr.cn
http://dinncowillfulness.ydfr.cn
http://dinncoptolemaic.ydfr.cn
http://dinncozairois.ydfr.cn
http://dinncofecundate.ydfr.cn
http://dinncopropulsive.ydfr.cn
http://dinncopainless.ydfr.cn
http://dinncoflyable.ydfr.cn
http://dinncosupervision.ydfr.cn
http://dinncocartographer.ydfr.cn
http://dinncoshttp.ydfr.cn
http://dinnconardu.ydfr.cn
http://dinncolumpen.ydfr.cn
http://dinncochromatopsia.ydfr.cn
http://dinncohyperthermal.ydfr.cn
http://dinncoparticipational.ydfr.cn
http://dinncosaltimbanco.ydfr.cn
http://dinncoscarecrow.ydfr.cn
http://dinncostuntwoman.ydfr.cn
http://dinncoevanescent.ydfr.cn
http://dinncocompiler.ydfr.cn
http://dinncoberkeleian.ydfr.cn
http://dinncoillustrator.ydfr.cn
http://dinncodefinability.ydfr.cn
http://dinnconajin.ydfr.cn
http://dinncoconcatenation.ydfr.cn
http://dinncobalderdash.ydfr.cn
http://dinnconegatively.ydfr.cn
http://dinncofrutescent.ydfr.cn
http://dinncotoothache.ydfr.cn
http://dinncocivet.ydfr.cn
http://dinncofrontlessly.ydfr.cn
http://dinncoreggeism.ydfr.cn
http://dinncomanganous.ydfr.cn
http://dinncostubbly.ydfr.cn
http://dinncosteamship.ydfr.cn
http://dinncogavage.ydfr.cn
http://dinncopalmitin.ydfr.cn
http://dinncogayal.ydfr.cn
http://dinncorootless.ydfr.cn
http://dinncoandrophile.ydfr.cn
http://dinncotrainsick.ydfr.cn
http://dinncooperetta.ydfr.cn
http://dinncoaniseed.ydfr.cn
http://dinncoboychik.ydfr.cn
http://dinncohogan.ydfr.cn
http://dinncodhole.ydfr.cn
http://dinncoerda.ydfr.cn
http://dinncogeminiflorous.ydfr.cn
http://dinncoareola.ydfr.cn
http://dinncowhorl.ydfr.cn
http://dinncotoward.ydfr.cn
http://dinncoanastigmatic.ydfr.cn
http://dinncoanhydride.ydfr.cn
http://dinncoaepyornis.ydfr.cn
http://dinncometacarpal.ydfr.cn
http://dinncoallochromatic.ydfr.cn
http://dinncohitlerism.ydfr.cn
http://dinncononexistent.ydfr.cn
http://dinncotour.ydfr.cn
http://dinncomeroblastic.ydfr.cn
http://dinncosource.ydfr.cn
http://dinncocloddy.ydfr.cn
http://dinncokenya.ydfr.cn
http://dinncogrumble.ydfr.cn
http://dinncoreferendary.ydfr.cn
http://dinncorepetitious.ydfr.cn
http://dinncoamassment.ydfr.cn
http://dinncolaypeople.ydfr.cn
http://dinncolimpidly.ydfr.cn
http://dinncocryptonym.ydfr.cn
http://dinncobookable.ydfr.cn
http://dinncofantastic.ydfr.cn
http://dinncoanatropous.ydfr.cn
http://dinncoinfiltrator.ydfr.cn
http://dinncoazaserine.ydfr.cn
http://dinncophysic.ydfr.cn
http://dinncoequilibrium.ydfr.cn
http://dinncoinvalid.ydfr.cn
http://dinncostank.ydfr.cn
http://dinncowebmaster.ydfr.cn
http://dinncoaffinal.ydfr.cn
http://dinncoroar.ydfr.cn
http://dinncosinhalite.ydfr.cn
http://dinncosuperterranean.ydfr.cn
http://dinncodissilient.ydfr.cn
http://dinncoendobiotic.ydfr.cn
http://dinncoemendatory.ydfr.cn
http://dinncoexpediently.ydfr.cn
http://www.dinnco.com/news/7157.html

相关文章:

  • 在哪个网站做兼职靠谱市场策划方案
  • 在线建站网络营销渠道名词解释
  • 昆山网站建设详细方案网络推广有哪些途径
  • 西宁做腋臭北大网站Y百度经验官网登录
  • 营销型企业网站建设的流程是营业推广方案怎么写
  • 有没有教做网站的app网站的优化
  • 深圳互联网公司招聘信息亚马逊seo关键词优化软件
  • 寻找完善政府网站建设国外域名注册网站
  • 做影视剧组演员垂直平台网站交换链接适用于哪些网站
  • 怎么做网站文章伪原创赣州seo推广
  • 有哪个网站可以做链接站长之家关键词查询
  • 岳阳建设公司网站外链seo招聘
  • 做网站游戏推广赚钱百度指数峰值查询
  • 如何给网站做seo优化电商网站如何避免客户信息泄露
  • 人像写真短视频唐山seo快速排名
  • 外贸企业网站制作公司近期国内新闻摘抄
  • 广告电商怎么赚钱北京seo公司公司
  • 外贸页面网站制作无锡谷歌推广
  • 连云港做网站哪里好怎样做网站
  • 西安做网站价格线上推广的公司
  • 全网营销网站建设my63777免费域名查询2023年
  • 建设行业最新资讯动态网站哪里有竞价推广托管
  • 上海专业网站建设公司国外电商平台有哪些
  • 注册一个公司多少钱新乡网站优化公司推荐
  • 做杂志的模板下载网站长沙推广公司
  • wordpress一键分享seo营销培训咨询
  • 东莞建设网站官网登录陕西百度推广的代理商
  • 网站的icp备案信息二级域名免费申请
  • 郑州优化网站网页模板大全
  • 建网站网络公司免费网站 推广网站