Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 区分已声明变量和未声明变量的方法-2_Javascript - Fatal编程技术网

Javascript 区分已声明变量和未声明变量的方法-2

Javascript 区分已声明变量和未声明变量的方法-2,javascript,Javascript,可能重复 我想在这里清楚地解释我的问题。 我有这种情况 if(//condition1) var x1 = 1; else if(//condition2) var x2 = 2; else if(//condition3) var x3 = 3; 这样我只能声明一个变量。 现在我想打印声明的变量。 我该怎么做 这是我正在尝试做的一个更现实的例子: var d_pattern=/d{1}/; var dd_pattern=/d{2}/; var ddd_pattern=/d{

可能重复

我想在这里清楚地解释我的问题。 我有这种情况

if(//condition1)
  var x1 = 1;
else if(//condition2)
  var x2 = 2;
else if(//condition3)
  var x3 = 3;
这样我只能声明一个变量。 现在我想打印声明的变量。 我该怎么做

这是我正在尝试做的一个更现实的例子:

var d_pattern=/d{1}/; 
var dd_pattern=/d{2}/; 
var ddd_pattern=/d{3}/; 
var dddd_pattern=/d{4}/; 

if(dddd_pattern.test(formatString)) 
    var dddd=this.getDayName(); 
else if(ddd_pattern.test(formatString)) 
    var ddd=this.getDayNameAbbr(); 
else if(dd_pattern.test(formatString)) 
    var dd=this.getDateFormatted(); 
else if(d_pattern.test(formatString)) 
    var d=this.getDate();
你可以使用typeof

if(typeof x1 !== "undefined"){
// ...
}
// other checks
你可以使用typeof

if(typeof x1 !== "undefined"){
// ...
}
// other checks

使用另一个变量保存信息:

var which;
if (condition1) {
    var x1 = 1;
    which = 'x1';
} else if (condition2) {
    var x2 = 2;
    which = 'x2';
} else if (condition3) {
    var x3 = 3;
    which = 'x3';
}
console.log('Declared variable is: ' + which);
但是请记住,正如在前面问题的几个答案中所解释的,提升会导致声明所有变量

如果希望能够使用
来显示变量的值,最好使用一个对象,将名称作为属性:

var obj = {}, which;
var which;
if (condition1) {
    obj.x1 = 1;
    which = 'x1';
} else if (condition2) {
    obj.x2 = 2;
    which = 'x2';
} else if (condition3) {
    obj.x3 = 3;
    which = 'x3';
}
console.log('Declared variable is: ' + which + ' value is: ' + obj[which]);

使用另一个变量保存信息:

var which;
if (condition1) {
    var x1 = 1;
    which = 'x1';
} else if (condition2) {
    var x2 = 2;
    which = 'x2';
} else if (condition3) {
    var x3 = 3;
    which = 'x3';
}
console.log('Declared variable is: ' + which);
但是请记住,正如在前面问题的几个答案中所解释的,提升会导致声明所有变量

如果希望能够使用
来显示变量的值,最好使用一个对象,将名称作为属性:

var obj = {}, which;
var which;
if (condition1) {
    obj.x1 = 1;
    which = 'x1';
} else if (condition2) {
    obj.x2 = 2;
    which = 'x2';
} else if (condition3) {
    obj.x3 = 3;
    which = 'x3';
}
console.log('Declared variable is: ' + which + ' value is: ' + obj[which]);
为什么不使用对象呢

var obj = {};
if(//conditon){
    obj.x1 = 1;
}
else if(//condition){
    obj.x2 = 2;
}

console.log(Object.keys(obj))
注意:这与上一个v1中给出的逻辑相同,如果这个问题为什么不使用对象

var obj = {};
if(//conditon){
    obj.x1 = 1;
}
else if(//condition){
    obj.x2 = 2;
}

console.log(Object.keys(obj))

注意:这与上一个v1中给出的逻辑相同,如果这个问题您可以按名称迭代上下文对象。在全局上下文中,它是窗口,所以您可以迭代窗口并检查
if(窗口[var\u name]==未定义)

关于你的问题,如果为任何上下文定义了变量,那么还有一种方法可以cehck——记住所有变量,然后在对上下文的每次更改中写入新的变量列表。但是它需要保留为您需要跟踪的上下文定义的变量列表

您可以按名称迭代上下文对象。在全局上下文中,它是窗口,所以您可以迭代窗口并检查
if(窗口[var\u name]==未定义)


关于你的问题,如果为任何上下文定义了变量,那么还有一种方法可以cehck——记住所有变量,然后在对上下文的每次更改中写入新的变量列表。但是它需要保留为您需要跟踪的上下文定义的变量列表

将打印置于设置变量的相同条件下如果您确定只分配一个变量,那么为什么不只使用一个变量名为什么使用三个变量使用一个变量所有
var finalVar=x1 | x2 | x3;console.log(finalVar)
将打印声明变量。认真地说,如果你不愿意听取别人的建议,请停止提问!将打印置于设置变量的相同条件下如果您确定只分配了一个变量,那么为什么不只使用一个变量名为什么不使用三个变量使用一个用于所有
var finalVar=x1 | | x2 | | x3;console.log(finalVar)
将打印声明变量。认真地说,如果你不愿意听取别人的建议,请停止提问!实际上,关于前面的问题ts可以只使用数组,这就解决了问题。实际上,关于前面的问题ts可以只使用数组,这就解决了问题。谢谢。是否有其他方法可以使用console.log()中使用的同一声明变量?请参阅答案中的第二个代码。我们将再次讨论,谢谢帮助谢谢。是否有其他方法可以使用console.log()中使用的同一声明变量?请参阅答案中的第二个代码。我们将再次讨论该问题,谢谢您的帮助