If 语句在 Javascript 中如何工作

How does If statement works in Javascript

当用户进行购买时,我希望网站在我的收据页面上查找此 cookie,如果它存在,那么标签应该有 'FIREuni' : 'TRUE'。如果 cookie 不存在,标签应该有 'FIREuni' : 'FALSE'。但我不知道我是否以正确的方式使用 if 语句。我对 javascript 还很陌生,这可能是我的第一个代码,谁能帮我指出我哪里出错了?

function checkCookie() {
    var src=getCookie("src");
    if (src!="") {
        FIREuni:'TRUE'
        var TrackObject = {

            'CJ' : {

                'CID': '12346',
                'TYPE': '7865',
                'OID': 'ORDERNUMBER',
                'CURRENCY':'USD',
                'DISCOUNT': '',
                'COUPON': '',

                PRODUCTLIST : [

                    {   'ITEM': 'item.variant.sku',
                        'AMT': 'OTOTAL',
                        'QTY': 'OTY'
                    },
                    {   'ITEM': 'item.variant.sku',
                        'AMT': 'OTOTAL',
                        'QTY': 'OTY'
                    }
                ]
            }};

    }
    else
    {
        FIREuni:'FALSE'
        var TrackObject ={


            'UNI' : {

                'CID': '',
                'TYPE': '',
                'OID': '',
                'CURRENCY': '',
                'DISCOUNT': '',
                'COUPON': '',

                PRODUCTLIST : [

                    {   'ITEM': '',
                        'AMT': '',
                        'QTY': ''
                    }
                ]
            }
        };
    }
} 

如果未找到 cookie,您的 getCookie 方法 returns 似乎为 null。在 JS 中 null 和 "" 不是一回事。你应该检查 if(src !=== null).

根据您的 getCookie 函数,您可能需要检查 null、undefined、and/or "".

看起来您使用的条件 (if/else) 是正确的,但是您在设置 FIREuni 的值时存在一些语法错误。如果表达式的计算结果为真(可以是 nullundefinedfalse'' 以外的几乎任何东西,条件语句通过评估传递给它们的表达式来工作, void 0, 或 0) 然后将执行后面的代码块,否则它将继续执行下一个 else ifelse(如果它们存在)。

在对象外部设置值时,您应该使用 =,而不是 :。所以应该是:

FIREuni = true;

FIREuni = false在else条件下。

在您的代码中,FIREuni 似乎是一个正在从 function checkCookie() 中修改的全局变量。如果您在打开标签的某个地方将其明确声明为 var FIREuni;VAR FIREuni = false;var FIREuni = TRUE; depending on the default value you want it to have or if you want it to be null before any validation is done. About your specific question, the if is correct in your case, is just a matter of if(condition){ }别的{ }` 并且您的情况似乎来自另一个函数,该函数检查客户端计算机中是否设置了名为 src 的 cookie。

虽然我不会推荐你使用你正在使用的方法,但很好,如果 cookie 是用你正在使用的函数设置的,我不会设置全局变量,但我会移动整个如果对象已设置或未设置,则创建对象的代码到 function getCookie(),然后,每当您需要检查是否设置了 cookie 时,调用此函数,如果对象已初始化,则保持原样,如果它不做任何你应该做的,我的意思是,把它全部留空,或者用用户的值初始化它。在我看来,这会更有效,并且不会使用令人困惑、耗时且有时不是好的做法的全局变量。

根据您的最新评论:"FIREuni is trackobject's object [...] "

我认为您正在寻找这样的东西:

var TrackObject;

function checkCookie() {
    var src = getCookie("src");

    if (src) {

        TrackObject = {

            FIREuni : true,

            'CJ' : {

                'CID': '12346',
                'TYPE': '7865',
                'OID': 'ORDERNUMBER',
                'CURRENCY':'USD',
                'DISCOUNT': '',
                'COUPON': '',

                PRODUCTLIST : [

                    {   'ITEM': 'item.variant.sku',
                        'AMT': 'OTOTAL',
                        'QTY': 'OTY'
                    },
                    {   'ITEM': 'item.variant.sku',
                        'AMT': 'OTOTAL',
                        'QTY': 'OTY'
                    }
                ]
            }};

    }
    else {

        TrackObject = {

            FIREuni : false,

            'UNI' : {

                'CID': '',
                'TYPE': '',
                'OID': '',
                'CURRENCY': '',
                'DISCOUNT': '',
                'COUPON': '',

                PRODUCTLIST : [

                    {   'ITEM': '',
                        'AMT': '',
                        'QTY': ''
                    }
                ]
            }
        };
    }
}