js实例教程-关于JS作用域的简单理解

发布时间:2018-11-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js实例教程-关于JS作用域的简单理解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

作用域分类1.全局作用域2.函数作用域3.块级作用域(ES6新增)

什么是全局作用域?

1.最外层的变量、函数2.未定义直接赋值的变量(不建议这么做!严格模式会报错!)没啥好说的~

什么是函数作用域?

1.函数内部代码块,能够嵌套注意点:JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里下面是代码亲测:

输出结果:① 'global'解析:echo函数在全局作用域定义(name=‘global'),调用处在env函数作用域内(name='env'),结果为'global',可以看出,函数运行时的作用域为定义时的作用域。②③ 'env'解析:两处调用的是同一个函数(都是innerEnv,定义处name=‘env’),但是它们调用处的作用域不一样,②处name='env',③处name='global',而调用结果都为'env',再次说明,函数运行时的作用域为定义时的作用域。

什么是块级作用域?

1.letconst定义的变量

 // 代码展示 {   VAR a = 'var';   let b = 'let';   const c = 'const'; }  console.LOG(a); // console.log(b); // 报错,b is not defined // console.log(c); // 报错,c is not defined
块级作用域小技巧
 for (var i = 0; i < 5; i++) {   setTimeout(function () {     console.log(i);   }, 100); }

上面这段代码本意是输出:0 1 2 3 4,结果输出:5 5 5 5 5,批量绑定DOM事件时很常见(当然,用事件委托可能更好)

没有块级作用域之前,使用自执行函数解决:

 for (var i = 0; i < 5; i++) {   (function (i) {     setTimeout(function () {       console.log(i);     }, 100);   })(i); }

有了块级作用域之后,是这样的:

 for (let i = 0; i < 5; i++) {   setTimeout(function () {     console.log(i);   }, 100); }

非常简洁~

作用域分类1.全局作用域2.函数作用域3.块级作用域(ES6新增)

什么是全局作用域?

1.最外层的变量、函数2.未定义直接赋值的变量(不建议这么做!严格模式会报错!)没啥好说的~

什么是函数作用域?

1.函数内部代码块,能够嵌套注意点:JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里下面是代码亲测:

输出结果:① 'global'解析:echo函数在全局作用域定义(name=‘global'),调用处在env函数作用域内(name='env'),结果为'global',可以看出,函数运行时的作用域为定义时的作用域。②③ 'env'解析:两处调用的是同一个函数(都是innerEnv,定义处name=‘env’),但是它们调用处的作用域不一样,②处name='env',③处name='global',而调用结果都为'env',再次说明,函数运行时的作用域为定义时的作用域。

什么是块级作用域?

1.let、const定义的变量

 // 代码展示 {   var a = 'var';   let b = 'let';   const c = 'const'; }  console.log(a); // console.log(b); // 报错,b is not defined // console.log(c); // 报错,c is not defined
块级作用域小技巧
 for (var i = 0; i < 5; i++) {   setTimeout(function () {     console.log(i);   }, 100); }

上面这段代码本意是输出:0 1 2 3 4,结果输出:5 5 5 5 5,批量绑定DOM事件时很常见(当然,用事件委托可能更好)

没有块级作用域之前,使用自执行函数解决:

 for (var i = 0; i < 5; i++) {   (function (i) {     setTimeout(function () {       console.log(i);     }, 100);   })(i); }

有了块级作用域之后,是这样的:

 for (let i = 0; i < 5; i++) {   setTimeout(function () {     console.log(i);   }, 100); }

非常简洁~

觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦!&nbsp;js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的js实例教程-关于JS作用域的简单理解全部内容,希望文章能够帮你解决js实例教程-关于JS作用域的简单理解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。