我现在开始学习js时,对javascipt还是陌生的,我对var
感到困惑,据说var y = "global";
if (y === "global") {
var y = "block-scoped";
console.log(y); // expected output: block-scoped
}
console.log(y); // expected output: block-scoped
是函数范围的和块范围的;
如果是这样,那么我们如何在该功能之外访问它们!可以说我想在另一个类中使用它(我不知道可能是通过创建一些对象或其他任何东西)(我想我们不能在这里创建对象!因为我猜它是一种基于功能编程的语言,所以我想!:()
transition:opacity 1s;
答案 0 :(得分:3)
var
未被认为是函数范围的。
用string dataRecordKey = dataRecord.MetaDataRecordId.ToString() + "|" + dataRecord.Profile + "|" + dataRecord.Group + "|" + dataRecord.FirstName + "|" + dataRecord.FamilyName+ "|" + dataRecord.City;
int dataRecordId = -1;
if (dictDataRecord.ContainsKey(dataRecordKey))
{
dataRecordId = dictDataRecord[dataRecordKey];
}
else
{
dataRecordId = await dataRecordRepository.CreateDataRecordAsync(dataRecord);
dictDataRecord.Add(dataRecordKey, dataRecordId);
}
声明的变量可以是函数或全局范围的。
如果变量是用let
或const
声明的,则它具有块级作用域。 A block用var
分隔,或者,如果不存在这些符号,则用封闭函数,或者,如果不在块或函数中,则用Global分隔。
I've written another post详细讨论了范围和范围链,应该有助于回答您的编码情况。