We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MDN没搜到相关内容。
尾调用(Tail Call)是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。
尾调用仅在 严格模式代码 中定义,因为通用的非标准语言 扩展 使我们能观察调用上下文链。
尾调用必须在调用目标函数之前释放与当前正在执行的函数执行上下文关联的任何临时内部资源,或者重新使用那些资源以支持目标函数。
来自高级前端面试小程序js基础,我错了
var b = 10; (function b(){ b = 20; console.log(b); })() // 最终输出 function b(){ b = 20; console.log(b); } // 和普通函数有区别 function c() { c = 10; console.log(c); } window.c // 函数 c() // 10 window.c // 10
如何改写使之分别打印10和20?
var b = 10; (function b(){ var b = 20; console.log(window.b); console.log(b); })()
来自高级前端面试小程序
var name = 'jack'; (function() { if (typeof name === 'undefined') { var name = 'jack'; console.log('Goodbye,', name); } else { console.log('Hello,', name); } })() 输出 Goodbye, jack
我虽然答对了,但是我理解错了! 我误以为是全局环境下的 var 先声明,值为 undefined,然后导致输出结果。
var
undefined
其实我想的是错的!
var name; // undefined (function() { console.log(name, typeof name) // '' string })()
看到没有?全局声明的 name 压根没影响到立即执行函数,可见 var 变量提升优先级没有立即执行函数高。
name
上一段代码之所以输出 Goodbye, jack,是因为 if 判断内有个 var 声明,即立即执行函数内部有个 var 变量提升,所以才会有这种输出结果,把内部的 var 改为 let 会发现结果截然不同!
if
let
var name = 'Tom'; (function() { if (typeof name === 'undefined') { let name = 'jack'; console.log('Goodbye,', name); } else { console.log('Hello,', name); } })() 输出 Hello, Tom
The text was updated successfully, but these errors were encountered:
No branches or pull requests
函数:尾调用
尾调用(Tail Call)是函数式编程的一个重要概念,本身非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。
IsInTailPosition ( call )
PrepareForTailCall ( )
尾调用必须在调用目标函数之前释放与当前正在执行的函数执行上下文关联的任何临时内部资源,或者重新使用那些资源以支持目标函数。
2020-07-27 补充(立即执行函数作用域)
来自高级前端面试小程序js基础,我错了
如何改写使之分别打印10和20?
2020-07-29 补充(立即执行函数)
来自高级前端面试小程序
我虽然答对了,但是我理解错了!
我误以为是全局环境下的
var
先声明,值为undefined
,然后导致输出结果。其实我想的是错的!
看到没有?全局声明的
name
压根没影响到立即执行函数,可见var
变量提升优先级没有立即执行函数高。上一段代码之所以输出 Goodbye, jack,是因为
if
判断内有个var
声明,即立即执行函数内部有个var
变量提升,所以才会有这种输出结果,把内部的var
改为let
会发现结果截然不同!The text was updated successfully, but these errors were encountered: