问题标签 [javascript-scope]
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.
javascript - 作用域时如何使我的javascript函数异步
我的一个 js 文件中有一个名为“updateStatus”的方法。我在每个 JS 文件中定义所有内容,如下所示。
现在我想让这个函数异步,但是如果我在下面的函数声明前面放一个异步,我会收到一个错误,说它需要在同一行上有一个分号。
javascript - 可变范围和事件监听器回调
我有以下代码,现在可以使用。问题是为什么?
以前我在 mouseup 回调中定义了我的startX
and ,如下所示:startY
但是每次在第一次触发事件后,我得到相同的 startX 和 startY 值。为什么?这对我来说没有意义,因为每次 mouseup 事件的回调函数完成时,let 的范围都应该重置变量?
我根据 Taplars 评论更新了我的代码,现在范围按我的预期工作
javascript - 使用 Hooks 编辑 React 状态
我想要一个全局变量,我可以使用钩子在任何地方进行编辑。
在示例中,我有 2 个组件都使用相同的钩子。在我看来,它External toggle
正在编辑自己的范围count
,并且Internal Toggle
也在改变自己的范围。
两个切换是否可以编辑相同的数据?
代码示例: https ://codesandbox.io/s/520zvyjwlp
index.js
useCount.js
javascript - JavaScript:理解作用域链
以下代码片段中的范围链是什么 -
我对此有几个疑问 -
- 为什么即使变量在全局范围内可用,函数中的记录器仍在
foo
打印?undefined
是因为在条件 falsy 块中重新声明了相同的变量,因此全局变量被从范围中删除了吗? - 此外,如果我们将函数内部 if 语句下的变量声明替换为
foo
tovar
,let
则函数内部的记录器会foo
从全局范围打印名称。这是如何工作的?
javascript - 作用域链中的内部函数和参数函数有什么区别?
我知道 JavaScript 的执行上下文是在调用函数时创建的。但我不明白下面的例子。示例 1 和示例 2 非常相似。
然而,这些结果并不相同。
我已经引用了链接。You-Don't-Konw JS和博客参考以及与 stackoverflow 相关的问题
示例 1
示例 2
我希望结果示例 1 和示例 2 都是 Bye。如果 JavaScript 的执行上下文是在函数调用的时候创建的,为什么两个结果不同呢?
javascript - 声明性和对象环境记录如何与“var”、“let”和“const”相关?
我正在尝试更深入地研究 javascript,虽然我找到了关于“var”、“let”和“const”之间差异的解释以及关于 ES6“环境记录”(声明性与对象)的解释,但我是当我在 Google Chrome 浏览器控制台中键入以下代码时,仍然无法理解为什么以下代码的工作方式:
如果console.log(b)
打印 4,但console.log(window.b)
打印undefined
,那么b
定义的范围是什么?
我知道当var
在函数之外使用时,它会undefined
在全局范围内创建一个变量。我不明白的是,在上面的示例中,当let
或const
在函数之外使用时会发生什么?
我根据其他答案假设这种行为与 ES6 环境记录有关,但是当我阅读参考书时,它对我来说确实没有意义。
有人可以用比那本参考书更简单的术语来解释这一点吗?
javascript - 更改原型中的值在 JavaScript 中不起作用
我是 JS 新手,让我们看看下面的代码。
我想在使用原型时将鼠标的腿属性值更改为 2,但我无法更改它。我得到的输出是 4。请帮助这是为什么?
javascript - 从外部访问在 JavaScript switch 语句中声明的变量
为什么
返回error: Uncaught ReferenceError: text is not defined
?
我不明白为什么变量文本返回未定义。
javascript - JS 如何评估表达式 ({...}).objMethod()?
根据我对如何在 JS 中评估表达式的有限知识,在下面的代码中,我知道括号使 JS 引擎评估括号内的任何内容,作为表达式({..})
,因此({..})
这将评估{...}
返回到全局范围的对象(在此案例,<<我对吗?如果不是,请纠正我)或表达式的范围。
但我不明白 Greet 函数如何在({...}).greet()
从表达式返回的对象的范围/上下文中进行评估({..})
。通常,至少我会将表达式的返回值分配给返回的 obj 的变量/引用,然后调用该 obj 的 greet() 方法,如
然后,如何评估以下代码。
谢谢
javascript - 如何将 onFormSubmit(e) 和 onEdit(e) 嵌套在一起
我希望 onFormSubmit(e) 成为我的主要功能触发器,并且我希望在其中嵌套 onEdit(e)。基本上,无论如何,触发器将运行 onFormSubmit 但如果有任何编辑,它将在 onEdit 中执行其他操作,如果没有,则它将执行其他操作。
我无法理解并使其发挥作用。
我的脚本触发器将 onFormSubmit 显示为唯一的函数,而 onEdit 不在下拉列表中。
编辑:设法获得我的 lastRow 值。但是,我仍然希望获得一个可以获取所有列的 lastRow 值的命令,而不是手动执行它。
编辑:使用FOR
循环有助于整理值。