问题标签 [hoisting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
3840 浏览

javascript - “提升” JavaScript 变量

我不完全理解为什么以下显示“提升”到最后。

任何指针将不胜感激。

0 投票
3 回答
1345 浏览

javascript - 如果我想“使用”提升,使用函数表达式而不是常规函数声明是否有缺点?

我正在学习 JavaScript,我觉得我对提升的理解足够体面,所以我不会问它是什么或如何做或类似的事情。

吊起来好吗?如果可以的话,我应该使用声明我的变量吗

还是我应该改用这个?

我什么时候应该起吊,什么时候不应该起吊?还是根本不重要?

0 投票
1 回答
48 浏览

javascript - 为什么在回调中声明 var 会取消定义参数?(吊装)

为什么 var bar = "derp" 的声明未定义预先访问的参数?

0 投票
1 回答
433 浏览

javascript - Javascript范围/提升或承诺/延期?

我正在尝试在每个循环的 Jquery 中对 API 进行外部 AJAX 调用。

这是我到目前为止的代码。

getStylesInfo() 返回与此类似的内容。包含汽车模型信息的对象数组。

我正在尝试遍历 sampleReturnedData 并将每个 id 用作具有 getNavigationInfo() 函数的不同 AJAX 调用中的参数。

我想遍历结果并进行检查。如果是真的,那么我想将整个对象推送到持有者数组。

问题是函数外的 console.log(holder) 返回一个空数组。if 语句中的 console.log(holder) 可以正常工作。

我不确定这是范围/提升问题还是我使用延迟的方式有问题?

我读过这个问题,很多人喜欢它。他们建议使用

或者更好地重写代码。我已经多次尝试并使用过控制台调试器。我不想将其设置为假。我只是不确定到底发生了什么。

我还通过这篇文章阅读了关于提升的内容。

我相信这与延迟有关,但我没有足够的 JS 知识来解决这个问题。

谢谢!

0 投票
1 回答
111 浏览

javascript - 变量绑定/第一类函数是否优于私有方法命名?吊装效果如何?

在使用变量绑定与私有方法命名函数约定时,有关结构化 Angular 代码和 JavaScript 行为的几个问题。在 AngularJS 中使用变量绑定函数/第一类函数而不是私有方法命名是否有性能或风格上的原因?每种方法对提升有何影响?下面的第二种方法会减少执行的提升量吗?这会对应用程序性能产生显着影响吗?

私有方法命名的示例。这是构建 Angular 代码的推荐方法吗?

变量绑定函数的示例。这种在控制器中构建角度代码的方法怎么样 - 在性能/风格方面有什么缺点或优点吗?

0 投票
1 回答
48 浏览

javascript - JavaScript Global Var Hoisting Issue

Here is my basic issue...

I know there must be a simple solution but I'm pretty stuck...

0 投票
6 回答
1097 浏览

javascript - 有人可以解释这些函数定义和提升吗?

有人可以向我解释以下三个示例中发生了什么吗?我的想法是第一个例子,bar没有执行(它只是一个函数声明)所以当foo执行时,输出是undefined?对于第二个示例,bar执行 以返回值 3。对于第三个示例,我不知道为什么它会产生 8。

0 投票
3 回答
45920 浏览

javascript - 为什么定义的全局变量未定义?

我这里有一个简单的函数和一个全局变量。

为什么是myname undefined而不是字符串"global"

不能引用在该函数范围之外定义的外部变量吗?在这个全局变量中......

以及如何解决此问题,以免undefined从全局变量中获取 a?

0 投票
2 回答
1432 浏览

javascript - 对于立即调用的函数,未提升 const 变量

我在玩新的 ECMASCRIPT-6 const关键字。我不理解关键字的一种特定行为。

可以说我有两个功能

第一个案例

第二种情况

对于第一种情况,输出是(不明白为什么)

ReferenceError:在初始化之前无法访问词法声明`_t'

对于第二种情况,输出是(很好)

不明确的

第二种情况的输出与预期的一样,但我不知道为什么第一种情况的结果会引发错误。从错误中可以推断出变量没有被提升。但为什么?我在这里发现const使用块范围。它与这个范围界定有什么关系吗?

我正在使用 Firefox Developer Version 控制台运行测试。

0 投票
3 回答
6370 浏览

javascript - 'use strict' 不停止函数范围内的提升

我的问题在于我正在学习 JavaScript 但对编程一点也不陌生。我理解提升,但是在严格模式下,这不应该产生错误并在将 6 分配给未声明的变量或 document.getElement... 被分配 x 这不会产生错误时被捕获,所以我的诊断是提升仍在继续..我不喜欢并且想通过使用严格来摆脱。使用 Chrome 版本 42.0.2311.152 m 作为我的浏览器