Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebStorm似乎正在从js文件导入而不是导出变量_Javascript_Typescript_Webstorm - Fatal编程技术网

Javascript WebStorm似乎正在从js文件导入而不是导出变量

Javascript WebStorm似乎正在从js文件导入而不是导出变量,javascript,typescript,webstorm,Javascript,Typescript,Webstorm,创建文件ownerId.js hello hello2 const xxx = 2 创建文件some.js const hello = 2; xxx 按住Ctrl键将xxx或hello变量悬停,然后单击,它们将在彼此之间重定向 所以基本上问题是我有一个ts文件和一个随机的js文件。不知何故,TypeScript甚至没有失败,因为某个随机js文件指定了该变量。有什么问题?没有任何导出或导入的文件只是一个脚本,它的所有变量都在全局范围内,所以WebStorm似乎做得很好。不

创建文件
ownerId.js

  hello
  hello2
  const xxx = 2
创建文件some.js

  const hello = 2;

  xxx
按住Ctrl键将
xxx
hello
变量悬停,然后单击,它们将在彼此之间重定向


所以基本上问题是我有一个ts文件和一个随机的js文件。不知何故,TypeScript甚至没有失败,因为某个随机js文件指定了该变量。

有什么问题?没有任何导出或导入的文件只是一个脚本,它的所有变量都在全局范围内,所以WebStorm似乎做得很好。不,不是这样。要放入全局,您需要执行
window.global=5
。如果从typescript运行脚本,脚本将失败,因为找不到var。如果你说的是真的,我的项目中会有10000个全局变量,所以这完全不是真的。可能是假设它是全局的,因为它是在普通的JavaScript中,但typscript可能会对此有所防范(对typscript不太熟悉)。或者,我知道Ruby mine显示的东西名称相同,因为它不能很好地告诉你的文件包含了什么或没有,斜杠只是为了保证你知道你可以引用的所有可能的东西(如果某些东西出了问题,它使用了错误的东西,这很有用),所以我想在webstorm中可能会有类似的情况。它只是显示相同名称的所有变量。真正重要的不是webstorm是否显示它,而是该值是否是您期望的值(未定义),正如上面提到的@Cerberus,您的变量属于全局范围,因为该文件不被视为模块(没有导出/导入声明)。在浏览器中,顶级作用域是全局作用域。这意味着在浏览器
var中,某个东西定义了一个新的全局变量。在Node.js中,这是不同的。顶层范围不是全局范围
var Node.js模块中的某些内容将是该模块的本地内容