JavaScript: переменная не определена

Когда я использую переменную в JavaScript, это выдает ошибку

ReferenceError: getalletje не определено

в зависимости от того, где я это заявляю.

Здесь я объявляю переменную:

get_name: function(){
        var getalletje = 5;
        return getalletje;
    },

Где я пытаюсь использовать переменную:

        self.$('.geldinuit-button').click(function(){

                self.screen_selector.show_popup('geldinuit',{
                    message: _t('Popup titel'),
                    comment: _t('getalletje'),
                    confirm: function(){
                        window.alert(getalletje);
                    },
                });

        });

Это дает ошибку, как это.

Но: если я поставлю var getalletje = 5;чуть выше self.$('.geldinuit-button').click(function(){, оно работает.

Что-то еще мне нужно сделать?

Редактировать для Шомз: Это полный код:

.............                
self.set_smart_status(status.newValue);
            });

            this.$el.click(function(){
                self.pos.connect_to_proxy();
            });
        },
    });

    module.PosWidget = module.PosBaseWidget.extend({
        template: 'PosWidget',
        init: function() { 
            this._super(arguments[0],{});
            this.pos = new module.PosModel(this.session,{pos_widget:this});
            this.pos_widget = this; //So that pos_widget's childs have pos_widget set automatically

.............................
............................

    get_name: function(){
        var getalletje = 5;
        return getalletje;
    },
...........................
...........................
                self.$('.geldinuit-button').click(function(){

                        self.screen_selector.show_popup('geldinuit',{
                            message: _t('Popup titel'),
                            comment: _t('getalletje'),
                            confirm: function(){
                                window.alert( this.get_name() );
                            },
                        });

                });
..........................

2 ответа

Решение

Это ограниченная проблема - объявленная вами переменная доступна только локально. Чтобы получить его значение, вы можете сделать что-то вроде:

confirm: function(){
    window.alert( yourObject.get_name() );
},

где yourObject это объект, который вы определили get_name метод для.

Вы не можете получить доступ к переменной вне функции, в которой вы ее объявили. Если вы хотите получить доступ к переменной глобальным способом, вы должны объявить ее вне get_name. В вашем случае я не вижу смысла, но следующее должно работать:

var getalletje = 0;

get_name: function(){
        getalletje = 5;
        return getalletje;
    },

self.$('.geldinuit-button').click(function(){

                self.screen_selector.show_popup('geldinuit',{
                    message: _t('Popup titel'),
                    comment: _t('getalletje'),
                    confirm: function(){
                        window.alert(getalletje);
                    },
                });

    });

также не должен:

comment: _t('getalletje'),

становиться

comment: _t(getalletje),

ОБНОВИТЬ

Кроме того, в вашем случае это объявление не полезно. Я не знаю, изменили ли вы свой код, когда задавали свой вопрос, но в этом случае делаете только:

self.$('.geldinuit-button').click(function(){
                var getalletje = 5;

            self.screen_selector.show_popup('geldinuit',{
                message: _t('Popup titel'),
                comment: _t('getalletje'),
                confirm: function(){
                    window.alert(getalletje);
                },
            });

});
Другие вопросы по тегам