小编jjp*_*dor的帖子

尾调用和尾递归有什么区别?

我理解尾递归,是一个特殊情况,函数对它自己进行尾调用.但我不明白尾调用和尾递归是如何不同的.在具有已实现的TCO(尾调用优化)的"正确尾递归"语言中,如Scheme,这意味着尾调用和尾递归不消耗堆栈或其他资源.在编译器无法优化尾递归的语言中,程序可能会耗尽堆栈并崩溃.在"正确的尾递归"语言中,实现尾递归以进行循环的效率并不比使用循环高,我猜想.

lisp scheme

18
推荐指数
2
解决办法
3730
查看次数

为什么立即调用函数表达式(IIFE)与自执行匿名函数不同?

很明显,在EcmaScript中,调用时的函数会创建一个新的执行上下文.函数中定义的所有变量和函数只能在该函数范围内访问.但是当我们使用闭包变量时,可以在该上下文之外访问函数.IIFE是一个立即调用的函数表达式.很简单.

但是为什么IIFE与自我执行的匿名函数不同,对我来说还不完全清楚!?

javascript iife

3
推荐指数
1
解决办法
844
查看次数

为什么静态作用域通常被认为比动态作用更好?

我不确定我是否理解正确,为什么在旧版本的Lisp中没有实现静态作用域,只有动态作用域.已经发明了Scheme的Sussman和Guy L. Steele Jr.只实现了静态范围.

我发现有时静态变量使用起来更方便,因为它们可以用作完美的状态持有者,尽管我们应该小心避免不希望的名称冲突,因为这是不希望的副作用.

我知道在编译期间检测到静态作用域,而动态作用域仅在运行时检测到.并且动态范围被认为是难以dubug,有时是为了推理.

如果我们把上面提到的事实放在一边,我不确定我理解为什么静态范围通常被认为比动态范围更好?

lisp scheme

1
推荐指数
1
解决办法
1114
查看次数

为什么html分隔符<p>被更改为容器<p> </ p>?

旧的HTML <p>标签是简单的分隔符,就像<hr> or <br>.它变成了容器<p></p>.这对我来说没有意义.它们可以<div></div>用作容器,并保持<p>原样.为什么W3C会这样做?

html

-4
推荐指数
1
解决办法
254
查看次数

标签 统计

lisp ×2

scheme ×2

html ×1

iife ×1

javascript ×1