js作用域的问题

D1Z55(M4XU657T}V9)[S]QT.png

调用这个函数返回一个函数。
返回时此函数变量时,变量应该脱离了createComparisonFunction函数的作用域。
propertyName变量在返回的函数中应该是无法访问到的。
为什么下方的调用可以正常执行?
还是说返回函数变量时,函数变量已经保存了propertyName变量?

阅读 2.6k
4 个回答
“返回时此函数变量时,变量应该脱离了createComparisonFunction函数的作用域。”

你的这句理解是错的,你应该是混淆了闭包和this指向的概念。this才会在上下文变化时被改变。
而这段代码利用的是闭包。函数体内的子函数可以访问父函数的变量。

这不就是个闭包么

可以了解一下js关于作用域链和闭包的概念。
js返回的这个方法在调用栈中会同时保存其使用到的上下文。

这个涉及到作域的问题。一个函数可以访问的作用域,包含自己的作用域,嵌套自己的作用域和全局作用域。你这里就是return的函数可以访问到嵌套自己的作用域,所以该数据是会被访问到的。建议你多看一下关于js基础的书籍,这些内容你就会清晰很多了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题