动态作用域和词法作用域

动态作用域一般是指一个变量在函数内外都能被使用。也就是说,函数调用时,参考的符号表和函数外的符号表是相同的。这种语言解释模型比较简洁,也比较好实现。而词法作用域则需要动态的建立多个符号表。在函数内有独立的符号表。而在每个词法闭包内,也会有一个继承自上层的符号表。所以说,闭包是一种动态作用域的结构。

符号表的继承即使在词法作用域的语言中也随处可见。所有的内置函数都会被任何的词法空间,命名空间继承。我认为关于这方面的争论让这个问题复杂化,我们可以用很多方式避免因为语言在这方面的区别产生的不同。

函数内部有静态变量是一个很有用的语言特性。而函数式语言没有。因为函数式语言的原则是,相同的输入产生相同的输出。既然这样,计算过一次,就可以把结果和参数映射在一起,下次调用的时候,就直接输出结果,会大大提高运算的效率。

函数式语言经常会说:变量是有害的东西,但实际上,在函数式语言中,变量是无处不在的。只是变量是不变的,只能被定义一次。如果内容改变了,就换一个名称好了。

函数式语言由于每个函数都是有固定的输出,那么程序模型就被大大的简化了。任何一个函数都是可以独立测试的单元。唯一要改变的就是处理问题的思路。

转载于:https://my.oschina.net/u/563463/blog/267778

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值