Javascript 使用三元运算符时返回未定义的对象属性
我正在构建一个对象文字,并使用if-else速记来设置我的一个属性的值,但它总是返回Javascript 使用三元运算符时返回未定义的对象属性,javascript,jquery,object,sharepoint,Javascript,Jquery,Object,Sharepoint,我正在构建一个对象文字,并使用if-else速记来设置我的一个属性的值,但它总是返回undefined,我不明白为什么: var cca = cca || {}; var initialization = function () { cca = { languageCode: _spPageContextInfo.currentLanguage, language: (_spPageContextInfo.currentLanguage == 1033
undefined
,我不明白为什么:
var cca = cca || {};
var initialization = function () {
cca = {
languageCode: _spPageContextInfo.currentLanguage,
language: (_spPageContextInfo.currentLanguage == 1033) ? "english" : "french",
englishTitle: "ENGLISH SITE",
frenchTitle: "FRENCH SITE",
site_title: (_spPageContextInfo.currentLanguage == 1033) ? cca.englishTitle : cca.frenchTitle,
page: _spPageContextInfo,
path: _spPageContextInfo.webAbsoluteUrl,
isGrantSite: function () {
return _.includes(cca.path, "grants");
}
};
};
当我使用断点求值时,求值会返回正确的值,但不会保存到属性中。然而,我正在以类似的方式设置另一个属性(cca.language),这很好
在计算三元表达式时,尚未在初始化函数中分配到
cca
。因此,cca.englishTitle
和cca.frenchTitle
还不存在。一种解决方案是将特定的财产转让推迟到之后:
var initialization = function () {
cca = {
languageCode: _spPageContextInfo.currentLanguage,
language: (_spPageContextInfo.currentLanguage == 1033) ? "english" : "french",
englishTitle: "ENGLISH SITE",
frenchTitle: "FRENCH SITE",
page: _spPageContextInfo,
path: _spPageContextInfo.webAbsoluteUrl,
isGrantSite: function () {
return _.includes(cca.path, "grants");
}
};
cca.site_title: (_spPageContextInfo.currentLanguage == 1033) ? cca.englishTitle : cca.frenchTitle;
site_setup();
};
至于调试器为什么要计算表达式到
“ENGLISH SITE”
,那是因为赋值已经完成(您进入下一条语句)。您也可以通过承诺来解决它。请看下面的代码:
var测试={
a:‘aaa’,
承诺。解决(测试)。然后(()=>test.b=test.a)
}
异步函数show(){
等待测试;
控制台日志(测试);
}
show()基本上我是在他们开始工作之前拜访他们的?