DDR爱好者之家 Design By 杰米
本文实例讲述了JS函数本身的作用域。分享给大家供大家参考,具体如下:
函数本身也是一个值,也有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在作用域无关。
var a = 1 var x = function() { console.log(a) } function f() { var a = 2 x() } f()
上面代码中,函数x是在函数f的外部声明的,所以它的作用域绑定外层,内部变量a不会到函数f体内取值,所以输出1,而不是2。
总之,函数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域
var x = function () { console.log(a); }; function y(f) { var a = 2; f(); } y(x) // ReferenceError: a is not defined
上面代码将函数x作为参数,传入函数y。但是x是在函数y体外声明的,作用域绑定外层,因此找不到函数y的内部变量a,导致报错。
同样的函数本内部声明的函数,作用域绑定在函数体内部
function foo() { var x = 1; function bar () { console.log(x) } return bar } var x = 2 var f = foo() f() // 1
箭头函数的作用域,是和父级上下文绑定在一起的
var obj = { id: 1, show: () => { console.log(this.id) } } obj.show() // undefined
上面代码show函数是一个箭头函数,其this指向父级,而父级是一个顶级对象,window,window.id没有定义,所以返回undefined
var obj = { id: 2, show: function() { return () => { console.log(this.id) } } } obj.show()() // 2
上面代码中,箭头函数定义在show函数内部,其父级作用域为show函数的作用域,show函数中this指向调用show函数的对象,即obj,obj中有id属性,且值为2,所以输出2
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2024年04月19日
2024年04月19日
- 群星《中国摇滚历程》2CD[WAV分轨][3.2G]
- 张可儿《纯音HQCD》[正版原抓WAV+CUE]
- 群星【水月空禅心HQCD】最有禅意的笛箫演奏[正版CD原抓WAV+CUE]
- 迪克牛仔《我这个你不爱的人》台湾首版[WAV+CUE]
- 郑华娟.1995-旅途与岁月的纪念品(2013华纳复刻版)【飞碟】【WAV+CUE】
- 潘越云.1986-旧爱新欢【百佳唱片NO.31】【滚石】【WAV+CUE】
- 陈淑桦.1991-聪明糊涂心【滚石】【WAV+CUE】
- 魔兽世界PLUSP3阶段输出战士毕业装备 魔兽世界PLUSP3战士装备推荐
- dnf全部时装一览
- dnf公会频道为什么显示灰色
- 群星《好歌30年金曲典藏2CD》[正版CD原抓WAV+CUE]
- 九州方圆二十周年纪念唱片九州方圆歌声1984WAV+CUE
- 珍藏大碟《好歌30年全系列》双碟典藏版8CD[WAV/MP3/分轨]
- 群星《流行新歌告诉你》 2CD[WAV+CUE][1.5G]
- 群星《老情歌对对唱》3CD[WAV+CUE][1.5G]