Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用三元运算符时返回未定义的对象属性_Javascript_Jquery_Object_Sharepoint - Fatal编程技术网

Javascript 使用三元运算符时返回未定义的对象属性

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

我正在构建一个对象文字,并使用if-else速记来设置我的一个属性的值,但它总是返回
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()