问题标签 [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.

0 投票
0 回答
86 浏览

javascript - 跨多个文件的 JavaScript 变量范围

我有一个关于变量值是否在不同调用之间持续存在的问题。

我有一个名为 shared.ts 的文件,其中包含一个变量 isSignIn 和一个函数 signIn,如下所示:

此登录函数由其他文件调用。在测试期间,似乎 isSignIn 的值在不同的调用之间持续存在。我想知道为什么。

0 投票
0 回答
43 浏览

javascript - 为什么“this”引用 AppComponent(范围问题)?

我正在使用 Angular 8,这是我的代码。

我想了解为什么匿名函数中的“this”指的是AppComponent. 我错过了什么。也许一些文档链接。

在此处输入图像描述

0 投票
2 回答
56 浏览

javascript - 如何在 Javascript 中使用超出其范围的变量?

我想使用超出其范围的“标签”变量,我该怎么做?我知道这不是一个好习惯,但我仍然想使用标签数组中的值。我尝试克隆变量,但范围问题仍然存在

编辑1: 我想以这种方式使用标签

但控制台显示错误“Cannot use undefined for forEach”

0 投票
1 回答
288 浏览

typescript - 在 TypeScript 中为微信小程序定义全局变量

亲爱的 StackOverflow 用户,

我为浏览器微信小程序制作了一个模块。该模块是用多个 TypeScript 编写的,并被编译成一个缩小的文件。在该模块中,我需要使用 DOM/BOM API,例如document'window , 'navigator. 在浏览器上,加载和使用编译好的单文件没有问题。

但是在微信小程序上,没有globalNode上的对象。也没有浏览器上的document全局window对象。为了解决这个问题,我为每个环境做了两个构建命令。

  • grunt build, 浏览器的标准 TS 编译
  • grunt wx_build,标准TS编译并附加微信小程序补丁代码

修补后的 js 文件如下所示:

在微信小程序项目中,我将mymodule-bundle.min.jsminiapp-adapter放在同一个文件夹中。结果,我可以将我的 HTML5 应用程序移植到微信小程序中。

但我想要一种更聪明的方法来做到这一点。

微信小程序运行时如何声明windowordocument全局变量?mymodule.ts

谢谢你。

0 投票
1 回答
31 浏览

geolocation - 如何使用 geolocation.getCurrentPosition 设置变量

这与这篇文章有关,但不同之处在于我试图理解为什么我不能从 geolocation.getCurrentPosition 内部设置外部变量

我似乎无法从中获得任何类型的返回值,也无法从中设置值。我只能从里面访问位置对象。我试过传入this

我叉了derek-朕会功夫的小提琴并修改了它: https ://jsfiddle.net/TwoFistedJustice/c3qr29L7/1/

这是基于这篇文章的另一个小提琴:

https://jsfiddle.net/TwoFistedJustice/yu8Lzjvx/4/

我很困惑。

有人可以帮我:

  1. 了解幕后发生的事情,使其以这种方式运行。
  2. 了解如何从 getCurrentPosition() 内部设置外部范围内的变量。
0 投票
0 回答
22 浏览

jquery - JQUERY 应用程序中的多个文件管理

如何使用多个文件拆分 JQUERY 或在一个文件中访问变量

文件1.js

文件2.js

html中包含顺序,file1.js file2.js

它不工作,我想让它工作,我该怎么做。

0 投票
0 回答
28 浏览

javascript - 使用 let 关键字在块内重新声明变量并在它之前访问但给出错误

ReferenceError: a 未定义

为什么即使 a 是使用 var 声明的,它也应该在块内有它的范围,它也会给出参考错误?

0 投票
1 回答
107 浏览

javascript - Javascript 经典脚本与模块范围

我的 javascript 前端代码中有一些奇怪的行为,所以我要问一个回归基础的问题。首先,我将设置一些示例。

script1.js

script2.js

模块1.js

模块2.js

test_page1.html

test_page2.html

以下是我的问题:

  1. 在运行时,由于test_page1.html布局方式,我认为script2.js可以在script1.js不需要任何导入 的情况下script1.js调用函数,但可以在script2.js? 基本上顺序重要吗?我很肯定它确实如此。
  2. test_page2.html函数从和module1.jsmodule2.js见到script1.jsscript2.js?如果不是,如何使它们对他们可见?
  3. 在不使用导入的情况下,test_page2.html函数是否从module1.js可见到?module2.js

基本上我的问题归结为,如何在模块中使用经典脚本(其中没有导出)?以及如何在经典脚本中使用模块。将经典脚本转换为模块在这里不是一个选项,因为有很多代码依赖于将其用作经典脚本。模块也是如此,它们不能转换为经典脚本,因为有其他代码将它们用作模块。

谢谢您的帮助

0 投票
2 回答
130 浏览

javascript - JS| 初始化对象在访问它的函数多次运行后未定义

我正在尝试减少 Chrome 扩展程序中的全局变量,以减少 JavaScript 中的“意大利面”或歧义。

我试图通过使用一个 init 函数来尝试此操作,该函数在可能多次触发的 mousedown eventListener 回调函数中声明这些否则为全局变量。

这样我就可以将这些变量 + 事件作为此类回调的参数传递给其他 eventListener 回调(即 mouseup 回调)。

我已将问题分解为一个单独的文件:

索引.html

测试.js

我用来控制执行的方法initVariables()是一个全局布尔变量,isVarsInitOnce它在初始化变量和设置对象以在executesMoreThanOnce()函数中使用一次时是有效的。

在循环中调用函数的第一个实例中可以访问for对象,但是undefined当尝试在for循环中调用函数的辅助实例中访问对象时。

这在控制台输出中相当清楚地表示:

我不确定为什么会发生这种情况。

谁能帮我理解为什么这不能正常工作?

关于我的案例,有没有人对减少全局变量有更好的建议?

非常感谢。

0 投票
3 回答
734 浏览

javascript - Javascript变量未在函数内部更新

上面的代码输出 100,而

输出 1000
有人可以解释为什么当参数名称也是“数字”时数字没有在函数内更新其值