Javascript Internet Explorer字符串比较

Javascript Internet Explorer字符串比较,javascript,internet-explorer,backbone.js,marionette,Javascript,Internet Explorer,Backbone.js,Marionette,此功能在Firefox中正常工作,但在IE11中无法正常工作。我相信罪魁祸首是: event = String(data.model.attributes.eventToRaise); 我知道,通过我在这里删除的一系列日志,我正确地进入了第一个else分支,但是在IE中,与“AAA”和“BBB”的比较并不正确。在Firefox中记录“event”的内容会显示一个字符串,但在IE控制台中它是一个指针。我尝试了一些不同的东西。toString,+事件,所有这些都在FF中起作用,但在IE中不起作用

此功能在Firefox中正常工作,但在IE11中无法正常工作。我相信罪魁祸首是:

event = String(data.model.attributes.eventToRaise);
我知道,通过我在这里删除的一系列日志,我正确地进入了第一个else分支,但是在IE中,与“AAA”和“BBB”的比较并不正确。在Firefox中记录“event”的内容会显示一个字符串,但在IE控制台中它是一个指针。我尝试了一些不同的东西。toString,+事件,所有这些都在FF中起作用,但在IE中不起作用

上下文是木偶网的主干,这个函数在来自不同地方的点击事件上被调用,代码应该确定是哪个事件发起了调用

       showPanel: function (data) {
            event = String(data.model.attributes.eventToRaise);
            if (event === this.lastEvent) {
                //do something
            }
            else {
                var view = NaN;

                if (event === 'AAA') {
                    //whatever
                }
                else if (event === 'BBB') {
                    //whatever else
                }

            this.lastEvent = event;
        }

编辑:“var event=Stringdata.model.attributes.eventoraise;”已解决问题

您可以尝试以下方法:

showPanel: function (data) {
    event = new String(data.model.attributes.eventToRaise);
    if (event === this.lastEvent) {
        //do something
    }
    else {
        var view = NaN;

        if (event.indexOf("AAA")) {
            //whatever
        }
        else if (event.indexOf("BBB")) {
            //whatever else
        }

    this.lastEvent = event;
}

解决了问题。

那么,您将eventToRaise设置为什么?1为什么设置为event而不是var event?2为什么Stringdata.model.attributes.eventToRaise而不仅仅是data.model.attributes.eventToRaise?@muistooshort var event做到了,谢谢。字符串,因为它的行为不像字符串,所以我试图更明确,但这是不必要的。
var event = data.model.attributes.eventToRaise;