Ruby中的范围是否与Javascript中的范围相似或相同,即功能范围(仅在创建函数时创建新范围)或块范围?如果它们不同,有哪些主要区别?
答案 0 :(得分:2)
完整的(我认为)列表是:
创建新的范围,
创建嵌套范围(并且是仅创建嵌套范围的东西)。
“Block”这里的意思是“允许您将单个匿名过程作为任何方法的最后一个参数传递的特殊语法结构”;它不意味着“if
表达式的部分”(或类似)。
答案 1 :(得分:0)
阻止范围。块中新定义的变量在块后不再存在;在块之前定义的变量保持其更广泛的范围。
a = 1
1.times do
a = 2 # outer scope
b = 1 # block scope
end
puts a # 2
puts b # error
这里我使用Ruby意义上的“块”。如果你从C意义上看,块没有范围(即if
,while
,begin
等等。不要引入新的范围级别。)