2015-09-16 4 views
2

1) Почему мне нужно обернуть указанный ниже код в (function(){})();, в противном случае это ошибка бросания во время JS linting и 2) я также получу ошибку, если поместить "use strict"; выше (function(){})();, что я думал поставить "use strict"; на самой первой строке стр.Зачем мне нужно обертывать код в выведенном сразу выражении функции?

Пожалуйста, дайте мне знать о двух поведении.

Мой рабочий код -

(function(){ 
"use strict"; 

// Constructing constructor function 
// whose purpose is to create new 
// Person Objects 
var Person = function(name) { 
    this.name = name || "TestUser"; 
    this.hobbies = []; 
}; 

Person.prototype.setHobby = function(hobby) { 
    this.hobbies.push(hobby); 
}; 

Person.prototype.getHobbies = function() { 
    return this.hobbies; 
}; 


exports.Person = Person; 

var peter = new Person('peter'); 
peter.setHobby('Gambling'); 
peter.setHobby('Street Fighting'); 
peter.setHobby('Smoking'); 

peter.getHobbies(); 
})(); 
+0

Какая ошибка jslint вы получаете? Вы используете jslint (не рекомендуется) или jshint (рекомендуется)? Если jshint, вы используете/* jslint node: true * /? –

ответ

4

Использование

/*jshint node: true */ 

в верхней части файла. Даже удаляя IIFE, он будет передавать jshint с летающими цветами.

Я бы не рекомендовал jslint. Вы проведете остаток своей жизни, сражаясь с ней, и настроите свой код, чтобы заставить его заткнуться.

+0

Thumbs up для решения, но я категорически не согласен с отключением 'jslint' (!). Например, это очень полезно, когда вы работаете в команде, и вы хотите, чтобы все придерживались определенного стиля кода. Также легко настроить, какие ошибки/предупреждения вы хотите отображать (настраиваемый файл конфигурации). Функция «неиспользуемые переменные» также очень удобна ... просто мое мнение. –

+1

Я не предлагал пропустить листинг. Я предлагал использовать linter, такой как jshint или eslint, который не столь упрямый и неприятный, как jslint. –

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

  • Нет связанных вопросов^_^