2013-11-26 5 views
3

Есть ли способ использовать глобальные переменные, объявленные в другом файле js, при анализе файла с использованием jslint.jslint Импорт глобальных переменных из другого файла

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

/* global console, myglobalvar1, othervar... */ 

Есть ли способ импортировать другой файл сценария, как в Re-sharpper?

/// <reference path="my.js" /> 

ответ

4

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

Вместо ...

var Global1 = "spam", 
    Global2 = 2; 

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

var MyStuff = MyStuff || {}; 
MyStuff.Global1 = "spam"; 
MyStuff.Global2 = 2; 

... или, более традиционно ...

var MyStuff = { 
    Global1: "spam", 
    Global2: 2 
}; 

... и теперь вы можете просто включить ...

/*global MyStuff*/ 

... на каждый [прочее] файл и прибыль. Если вы добавите больше предметов в MyStuff позже, вы уже охвачены. И если вам нужно добавить что-то в MyStuff на странице, которая рассматривает его как глобальную, это тоже просто ... MyStuff.NewField = "new";

Что вы имеете много вещей, перемещающихся из одного файла в другой, уже предполагает, что они являются функциональным блоком (или нескольких функциональных блоков), о которых должен знать каждый файл. JSLint предлагает вам группировать их как таковые.

+0

действительная точка Ruffin, я уменьшу количество переменных на файл, сгруппировав их –

+0

Разве эта архитектура просто не удаляет возможность JSLint обнаруживать недостающие глобальные переменные? MyStuff.Global3 не существует, но JSLint подумает, что это нормально, потому что он перестает проверять MyStuff. – Robert

+0

JavaScript - это динамический язык, поэтому вы действительно не можете сделать ничего лучше, чем проверять верхний уровень «пространства имен». 'Global3' мог быть добавлен в любой файл вашего проекта, независимо от того, где был определен' MyStuff', а JSLint - только в * файловой * области. И поверьте мне, преднамеренное пространство имен является практическим обязательным для того, чтобы поддерживать разделение проблем, когда ваш код становится даже достаточно сложным, как предлагает «глобальная» линия OP! ; ^) – ruffin

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