Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何检查变量是否已声明,即使它尚未声明';没有定义吗?_Javascript_Variables_Undefined_Undeclared Identifier - Fatal编程技术网

Javascript 如何检查变量是否已声明,即使它尚未声明';没有定义吗?

Javascript 如何检查变量是否已声明,即使它尚未声明';没有定义吗?,javascript,variables,undefined,undeclared-identifier,Javascript,Variables,Undefined,Undeclared Identifier,这个问题: 不考虑已声明但未定义的变量(与未声明和未定义的变量相反)。具体来说,如果我想检查是否已声明x,这: typeof x==“未定义” 不会的,因为 var x; //<- declared but undefined // idontexist not declared typeof idontexist === typeof x; // evaluates to true 尝试使用未声明的变量将抛出一个错误,因此您可以使用try-catch块来确定是否已声明变量 va

这个问题:

不考虑已声明但未定义的变量(与未声明和未定义的变量相反)。具体来说,如果我想检查是否已声明
x
,这:

typeof x==“未定义”

不会的,因为

var x; //<- declared but undefined
// idontexist  not declared

typeof idontexist === typeof x; // evaluates to true

尝试使用未声明的变量将抛出一个错误,因此您可以使用
try-catch
块来确定是否已声明变量

var-myVar;
试一试{
myVar;
log('myVar已声明');
}捕获(错误){
if(参考错误实例){
log('myVar未声明');
}否则{
log('捕获了一些其他错误');
}
}
试一试{
未声明;
log('notDeclared was declared');
}捕获(错误){
if(参考错误实例){
log('notDeclared未声明');
}否则{
log('捕获了一些其他错误');
}   

}
我几年前就回答了这个问题…,不记得在哪里了

    "variablename" in this //> true : false
其中,这是任何执行上下文,否则将访问该变量名值

    function exists( x ){ return x in this }

全局变量和内存泄漏之间的关系很小。也就是说,现在还不清楚为什么你可能需要知道这一点。您可以通过查看源代码来判断是否声明了变量。您正在进行某种代码生成吗?我想,使用
try catch
。这是一个有趣的问题,但对于所有意图和目的来说,在运行时这应该是无关的。这似乎是IDE的工作,而不是代码本身。不必检查
if(typeof x==“undefined”)
您只需执行
x=x | | 3
即可轻松简化此操作。在运行时查找此操作的简单方法是在JavaScript文件中使用“use strict”指令。如果有任何未声明的变量,这将引发错误。中的
用于对象属性,而不是变量。它可能适用于全局范围中的
var
-声明,但仅此而已。全局范围不是窗口对象吗?@Umer jo muhamut。并非所有脚本都在浏览器环境中运行!
    function exists( x ){ return x in this }