鱼C论坛

 找回密码
 立即注册
查看: 945|回复: 5

关于嵌套函数作用域的问题

[复制链接]
发表于 2019-2-25 19:29:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ截图20190225192815.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-25 19:34:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-25 19:47:28 | 显示全部楼层
13572044595 发表于 2019-2-25 19:34
https://fishc.com.cn/forum.php?mod=viewthread&tid=131297#pid3774110

多谢,看了但是,看完了理解还是不够深刻,先改变外部变量的值,是不是可以理解为,先得定义赋值一个变量,然后才能进行操作。这里外层函数变量相对他的内部函数来讲也是全局变量?如果是全局变量的话,内部函数也应该是能直接访问的吧?是这样吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-25 19:50:05 | 显示全部楼层
lbf4325 发表于 2019-2-25 19:47
多谢,看了但是,看完了理解还是不够深刻,先改变外部变量的值,是不是可以理解为,先得定义赋值一个变量 ...


你不要给 var 赋值,直接打印 不就知道了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-25 20:08:51 | 显示全部楼层
lbf4325 发表于 2019-2-25 19:47
多谢,看了但是,看完了理解还是不够深刻,先改变外部变量的值,是不是可以理解为,先得定义赋值一个变量 ...

这个不是a为全局变量吗?地下函数没赋值定义它也可以打印呀?我是把刚刚的外层函数中的var 理解为这里的a ,也就是理解为全局变量,不知道我的理解是不是有错    。 QQ截图20190225200339.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-25 21:07:52 | 显示全部楼层
你的第一问没看懂。 哪里有说 “因为修改了外部函数 var 的值,导致外部函数变量 var 的值受到保护”?
第二问和你下面的疑问在一起讲,内部函数 print(a) 时,会先在自己的函数作用域(理解为一个空间)寻找 a,当找不到时才会去外部作用域寻找。你的那个输出 8 的 function 函数就是这样的原理。
那么为什么 A 不报错 B 会报错呢?
A 不报错很好理解,程序明明白白。
至于 B 报错是因为在 inside() 函数运行到 print(var) 的时候,现在内部寻找变量 var,确实也找到了(下面的 var = 3),但是顺序不对,pirnt(var) 在 var = 3 之前执行,所以报错。
  1. local variable 'var' referenced before assignment
复制代码

翻译过来就是
  1. 赋值前引用的局部变量“var”
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-14 04:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表