【问题标题】:How does If statement works in JavascriptIf语句在Javascript中如何工作
【发布时间】:2015-04-23 22:44:54
【问题描述】:

当用户进行购买时,我希望网站在我的收据页面上查找此 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': ''
                    }
                ]
            }
        };
    }
} 

【问题讨论】:

  • 会发生什么?你想要什么?您的问题说明“if 语句如何工作”或它是如何编译的。请更清楚
  • FIREuni 应该是什么?它是TrackObject 对象的属性吗?是另一个变量吗?它本身是没有意义的。
  • @PatrickEvans 我也有同样的想法,但这不是语法错误。它是一个语句标签,后跟一个只是字符串文字的语句。
  • 所以它是有效的语法,它只是不做任何事情。
  • 为什么你的函数分配了一个局部变量然后什么都不做?

标签: javascript jquery if-statement logic logical-operators


【解决方案1】:

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

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

FIREuni = true;

FIREuni = false 在 else 条件下。

【讨论】:

    【解决方案2】:

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

    根据您的 getCookie 函数,您可能需要检查 null、未定义和/或“”。

    【讨论】:

    • 你怎么知道他的getCookie函数返回了什么?
    • getCookie 代码未发布,但查看常见的 getCookie 实现,它们返回 null。是的,我有一个错字。
    • @Barmar 我在我家设置了一个名为 src 的 cookie,其值为 uni,所以如果该 cookie 不存在,那么我希望 FIREuni 为 false。
    • @Programmermid 如果您正在回答我对您的问题的评论,您应该将其作为对问题的评论发布或更新问题。此处的评论应仅与此答案相关。
    【解决方案3】:

    根据您的最新评论:“FIREuni 是 trackobject 的对象 [...]”

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

    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': ''
                        }
                    ]
                }
            };
        }
    } 
    

    【讨论】:

    • 感谢您的编辑,但这是否会首先检查名为 src 的 cookie,如果存在,它将设置 FIREuni = true 并填充 CJ 中的所有值?
    • 我不确定你是如何定义 getCookie 函数的,但如果 src 的值不是空字符串、false、null、undefined 或 NaN,它将通过.
    【解决方案4】:

    在您的代码中,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是否被设置时,调用这个函数,如果对象被初始化就保持原样,如果它不是做任何你应该做的,我的意思是,把它全部空白,或者用用户的值初始化它。在我看来,这会更有效,并且不会使用令人困惑、耗时且有时不是一个好习惯的全局变量。

    【讨论】:

    • 正如@Barmar 在 cmets 中已经指出的那样,FIREuni 不是变量 - 它是一个语句标签。
    • @Juan 你能推荐一个你所说的代码吗?语法对我来说很难,因为我是 Javascript 的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多