2016-07-02 3 views
0

Я больше работаю над структурированием своего Javascript-кода, и я пытаюсь использовать namespacing намного больше. Я использую JSLint, чтобы помочь мне улучшить код. Если я бегу это через JSLint:Структура Javascript: Var вне сферы действия. Namespacing

'use strict'; 
var app = { 
    start : function(){ 
     var x = 1; 
     x += 1; 
    }, 

    restart : function(){ 
     app.start(); 
    } 
}; 

Он говорит мне, что app выходит за рамки.

Мне очень нравится писать app.start(); вместо this.start();, так как включение функции, относящейся к частому, является намного более выразительным.

Знает ли JSLint что-то, чего у меня нет, о переменной области видимости? Я знаю, что мой код работает, но каким-то образом он неаккуратен? И как я должен это делать, если не так :)?

Спасибо!

+0

Возможно, будет более счастливым работать через jshint.com – charlietfl

+0

@charlietfl Ах, круто! Это очень подробный отчет, который он дает вам, отличный инструмент. Я все еще беспокоюсь о том, что может иметь потенциальная мудрость JSLint, о которой я не знаю, хотя :) – user3307017

ответ

0

Вы можете избежать этого предупреждения, если сначала объявите свою переменную.

'use strict'; 
var app; 

app = { 
    start : function(){ 
     var x = 1; 
     x += 1; 
    }, 

    restart : function(){ 
     app.start(); 
    } 
}; 
+0

Что же JSLint пытается сказать? Я не вижу функционального различия между объявлением переменной и присвоением ей чего-то, а не объявлением ее и назначением ей :)? – user3307017

+0

Я полагаю, что это не нравится, если вы объявляете переменную и используете ее внутри декларации. Не означает, что это недопустимый JS, просто он может привести к ошибкам в некоторых случаях. – Damon

+0

Как в каких случаях? :) – user3307017

Смежные вопросы