kev*_*vin 5 javascript hoisting
我最近一直在学习很多Javascript,而且我一直在努力理解提升变量的价值(如果有的话).
我理解(现在)JS是一个双程系统,它编译然后执行.另外,我理解var关键字'exists'在它声明的词法范围内,因此如果在引擎分配值之前调用它,那么为什么它是'undefined'.
问题是,为什么这甚至重要?有什么用途可以提升你不能不提升的变量?我觉得它只会创建不太可读的代码而没有收获......
是否存在提升变量有用的示例?
"hoisting"对于相互递归函数(以及以循环方式使用变量引用的所有其他函数)是必需的:
function even(n) { return n == 0 || !odd(n-1); }
function odd(n) { return !even(n-1); }
Run Code Online (Sandbox Code Playgroud)
没有"提升",该odd
功能将不在该even
功能的范围内.不支持它的语言需要前向声明,而不适合JavaScripts语言设计.
需要它们的情况可能会更频繁地出现在您认为:
const a = {
start(button) {
…
button.onclick = e => {
…
b.start(button);
};
}
};
const b = {
start(button) {
…
button.onclick = e => {
…
a.start(button);
};
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
314 次 |
最近记录: |