奇怪的结构?

时间:2011-10-06 07:11:14

标签: javascript function syntax extjs4

这行js代码的含义是什么:

        ('selectionchange',function(sm, rs) {
            if (rs.length) {
                var detailPanel = Ext.getCmp('detailPanel');
                bookTpl.overwrite(detailPanel.body, rs[0].data);
            }
        })

这是以下链接的一部分: http://dev.sencha.com/deploy/ext-4.0.2a/examples/grid/binding-with-classes.js


更新: 我删除了这些行和代码运行没有任何diffrenece! 这是一个编码错误 谢谢大家

2 个答案:

答案 0 :(得分:5)

我会走出困境并称之为编辑错误。这是一个更多的背景:

    initEvents: function() {
        // call the superclass's initEvents implementation
        this.callParent();

        // now add application specific events
        // notice we use the selectionmodel's rowselect event rather
        // than a click event from the grid to provide key navigation
        // as well as mouse navigation
        var bookGridSm = this.getComponent('gridPanel').getSelectionModel();
        ('selectionchange', function(sm, rs) {
        if (rs.length) {
            var detailPanel = Ext.getCmp('detailPanel');
            bookTpl.overwrite(detailPanel.body, rs[0].data);
        }
    })
        bookGridSm.on('selectionchange', this.onRowSelect, this);
    },

这是整个文件中唯一提到的bookTpl。有人将似乎是事件绑定的内容复制到其粘贴缓冲区中并意外地将其粘贴到此文件中,或者他们故意粘贴它以检查bookGridSm.on调用的语法并忘记自行清理。

查找示例的勘误表。

答案 1 :(得分:3)

这段代码本身没有做任何事情,它只是死代码,一个使用逗号运算符的parentethized表达式。

逗号运算符将计算第一个表达式'selectionchange',然后计算函数表达式,但实际上没有任何效果,执行优化的Javascript引擎甚至可能不会评估这两个表达式。

看起来像一个函数调用(可能是bookGridSm.on方法,绑定一个事件处理程序,因为该对象是该函数的唯一范围)但不知何故他们删除了引用乳清功能的召唤。