JavaScript中的块级作用域访问
我知道你会认为这是一个重复,但我从许多相关的帖子中发现,人们在每个帖子中都充斥着未受过教育的“不”,我很高兴这里还没有出现这种情况。无论如何,我想重新开始讨论 例如,让我们以“未知”语句为例:JavaScript中的块级作用域访问,javascript,Javascript,我知道你会认为这是一个重复,但我从许多相关的帖子中发现,人们在每个帖子中都充斥着未受过教育的“不”,我很高兴这里还没有出现这种情况。无论如何,我想重新开始讨论 例如,让我们以“未知”语句为例: function foo() { var bar = 5; if(true) { let bar = 10; alert(bar); } alert(bar); } 此功能将首先警告10,然后警告5 这是因为bar=5位于功能级
function foo()
{
var bar = 5;
if(true)
{
let bar = 10;
alert(bar);
}
alert(bar);
}
此功能将首先警告10
,然后警告5
这是因为bar=5
位于功能级别范围,而bar=10
的重新分配仅保留在块级别范围内,这要感谢我们的小伙伴let
话虽如此,JavaScript中肯定存在块级作用域,但我们如何访问它呢
例如:
var arr = [
{
label: "x"
},
{
label: "y"
},
{
label: "z"
},
];
var randIdx = Math.floor(Math.random() * 3);
for(var i = 0; i < arr.length; i++)
{
if(i === randIdx)
arr[i].value = true;
else
arr[i].value = false;
}
function foo()
{
if(arr[0] || arr[1] || arr[2])
{
alert((\*passing argument*\).label);
}
}
foo();
var-arr=[
{
标签:“x”
},
{
标签:“y”
},
{
标签:“z”
},
];
var randIdx=Math.floor(Math.random()*3);
对于(变量i=0;i
必须能够访问当前if
语句的块范围,并检索给定表达式的传递参数块级范围确实存在,为什么我不能修补它呢
谢谢 不,这是不可能的。定义为 生产IfStatement:
if
(
Expression)
语句
评估结果如下:
取而代之的是,将条件表达式赋值给变量:
var-myVar;
if(myVar=SomeFunction()){
myVar;//由`SomeFunction'返回的值`
}
var-myVar;
如果(myVar=(x | | | y | | z)){//为清晰起见添加了括号
myVar;/`x`、`y`或`z`
}
不,不可能。定义为
生产IfStatement:if
(
Expression)
语句
评估结果如下:
取而代之的是,将条件表达式赋值给变量:
var-myVar;
if(myVar=SomeFunction()){
myVar;//由`SomeFunction'返回的值`
}
var-myVar;
如果(myVar=(x | | | y | | z)){//为清晰起见添加了括号
myVar;/`x`、`y`或`z`
}
No。但是你可以很容易地先将条件的结果赋给一个变量。是的,我当然可以@FelixKling,但这不是重点。我不是在试图解决分配变量的问题,我是在问一个问题。当然,正如我所说的,你想要的是不可能的,所以你必须寻找尽可能接近你想要的东西(或者顺其自然)。我只是觉得指出替代方案比简单地说“不”更有价值。。。“你不这么认为吗?”费利克斯克林-哇-哇-哇,放松点,巴德。哈哈,我问的是这是否可能,而不是什么是接近做到这一点。“是”可以用一个解释,但“不”也可以用“不”来解释。我知道如何解决这个问题,这不是我要问的--让它成为——:)或者我们可以编辑我们的评论来打乱时间线,但是,是的,这是一个很好的观点。只是你听起来很咸…好吧。然后简单地忽略其他建议,但让未来的读者从中获益:)不。但是你可以很容易地首先将条件的结果分配给一个变量。是的,当然我可以@FelixKling,但这不是重点。我不是在试图解决分配变量的问题,我是在问一个问题。当然,正如我所说的,你想要的是不可能的,所以你必须寻找尽可能接近你想要的东西(或者顺其自然)。我只是觉得指出替代方案比简单地说“不”更有价值。。。“你不这么认为吗?”费利克斯克林-哇-哇-哇,放松点,巴德。哈哈,我问的是这是否可能,而不是什么是接近做到这一点。“是”可以用一个解释,但“不”也可以用“不”来解释。我知道如何解决这个问题,这不是我要问的--让它成为——:)或者我们可以编辑我们的评论来打乱时间线,但是,是的,这是一个很好的观点。只是你听起来很咸…好吧。然后简单地忽略其他建议,让未来的读者从中获益:)呃。。。这确实是一个合适的答案,但它仍然。。。我不知道。。。不是我想要的。我希望通过保留字或其他方式从语句中访问参数。就像函数中的参数
一样,没有指定的参数。@WebWander:如果你真的想这样做,那么你必须创建自己的JS方言(编译成JS)。但在“普通”JS中有可能吗?不。真的@slebetman和有趣的想法FelixKling,但我仍然会保持我的希望。我经常遇到一些人,他们对语言了解得很透彻,这是其他人都没有想到的。我先把这个问题留待一会儿,然后回答“不”。可能性太大了,我不能不抱太大的希望。不要抱太大的希望。在我和FelixKing之间,你有99%的javascript知识。如果Bergi发表评论,那么你几乎有100%@weblower的便条介绍