区分已声明变量与未声明变量的方法
Way to differentiate between declared variable vs undeclared
>我有一个问题。我只会在满足我的条件时声明一个变量。
if(//some condition1)
var some1=1;
else if(//some condition1)
var some2=2;
现在
var some3=some1+some2;
如果满足两个条件,则可以将总和放入some3;
如果只满足一个条件,我想在some3
中some1
或some2
我怎样才能做到这一点?
注意:感谢您的回答,但我想仅在满足该条件时才声明变量。还有其他解决方案吗?
var some3=0;
if(//some condition1){
var some1=1;
some3 += some1;
}else if(some condition2){
var some2=2;
some3 += some2;
}
编辑:更好的选择:
var some3=0;
if(some condition1){
some3 += 1;
}else if(some condition2){
some3 += 2;
}
而且这两个条件不会同时满足,所以,如果你愿意,你也可以像下面一样做
var some3=0;
if(some condition1){
some3 += 1;
}
if(some condition2){
some3 += 2;
}
首先,你不能只在满足某个条件时才声明变量。JavaScript 具有函数作用域,这意味着,无论你在代码中的哪个位置编写var some1
,它都将始终被提升到函数作用域的顶部:
function A() {
if (...) {
var a = 1;
}
}
将被解释为:
function A() {
var a;
if (...) {
a = 1;
}
}
话虽如此。我认为要解决您的问题,您只需要使用 0 初始化变量:
var some1 = 0,
some2 = 0,
some3;
if(//some condition1)
some1 = 1;
else if(//some condition1)
some2 = 2;
some3 = some1 + some2;
编辑
实际上,有一种方法可以在满足条件时才声明变量:
if (...) {
eval("var x = 1;");
}
但我真的认为没有必要像这样的"黑客",也不会建议这种方法。
首先将两个变量初始化为 0。
var some1 = 0, some2 = 0;
if (condition1) {
some1 = 1;
}
if (condition2) {
some2 = 2;
}
var some3 = some1 + some2;
由于您希望同时满足这两个条件并设置两个变量,因此不应使用 else if
。只有两个单独的if
语句。
if(//some condition1) {
var some1 = 1;
} else if(//some condition1) {
var some2 = 2;
}
var some3 = 0;
if(some1 !== undefined) {
some3 += some1;
}
if(some2 !== undefined) {
some3 += some2;
}
对象怎么样:
var obj = {};
if(//conditon){
obj.some1 = 1;
}
else if(//condition){
obj.some2 = 1;
}
var sum3 = 0;
for(var key in obj){
sum3 += obj[key];
}
为什么不先声明变量,然后在满足条件时设置它们的值
var some1 = 0;
var some2 = 0;
if (//some condition)
{
some1 = 1;
}
if (// some condition)
{
some2 = 2;
}
var some3 = some1 + some2;
在开头声明所有变量。将它们初始化为 0。如果满足条件,请更改变量值。然后,当您求和时,任何值加 0 都保持不变。或者,如果满足条件,则该值不会为 0。
如果需要使用该模型,则可以使用第四个变量。
var some0 = 0
if(/*some condition1*/) {
var some1=1;
some0 = some1 + some3
}
else if(/*some condition1*/) {
var some2=2;
some0 = some2 + some3
}
some3=some0
怎么样:
var some3 =
(2 > 4 ? 10:0) +
(5 < 8 ? 20:0) +
(10 == 11 ? 30:0) +
('a' < 'b' ? 40:0) ;
我承认这看起来并不漂亮。
var some3 = 0; //Assingning global var.
if(//some condition1)
var some1=1;
else if(//some condition1)
var some2=2;
在条件下
if(some1 != null && some2 != null )
some3=some1+some2;
else if(some1 != null && some2 == null)
some3=some1;
else if(some1 == null && some2 != null)
some3=some2;
else if(some1 == null && some2 == null)
some3=some3;
然后
alert(some3);
你使用
if(//some condition1( var some1=1;
否则如果(//某些条件1( 变量 some2=2;
然后尝试像我的 JSFIDDLE 一样捕获语句
try{
var some3=some1+some2;
}
catch (e){
try{
var some3=some1;
document.getElementById("test").innerHTML= some3;
}catch (e){
try{
var some3=some2 ;
document.getElementById("test").innerHTML= some3;
}
catch (e){
document.getElementById("test").innerHTML="Something went wrong!!!!or no condition satisfied";
}
}
}
相关文章:
- 是否可以在另一个变量中使用未声明的变量
- Coffeescription:循环中的条件变量未正确声明
- 是否可以在 Javascript 中将未声明的变量作为参数传递
- Javascript未声明变量
- 为什么Javascript代码打印'未定义'即使变量被声明为全局变量
- 为什么以及如何使用 jQuery 未声明的变量作为 ID
- 在 Angular 服务中接收函数的未声明变量
- 让 javascript 将(默认情况下)未声明的变量声明到当前本地范围(基于首次使用)而不是全局范围
- 在 JavaScript 中,未声明的变量赋值可以在函数范围之外访问
- JS中的未声明变量自动拾取DOM对象
- 如何避免未声明的变量破坏智能感知
- 如何评估潜在未声明变量的属性
- 为什么要在javascript中保留未声明的变量
- 区分已声明变量和未声明变量2的方法
- 区分已声明变量与未声明变量的方法
- 如何检查变量是未定义的(已声明但未赋值)还是未声明的(不存在)
- 函数中未声明的JavaScript变量覆盖使用
- Javascript变量已声明并初始化,但在检查时未定义
- 为什么不用“strict”呢?(JavaScript)检测未声明的变量
- 引用错误变量未声明