Первая часть этого скрипта, похоже, работает правильно, она выполняет итерацию через каждый документ и если имя документа соответствует определенному шаблону регулярного выражения, оно оно дает определенную переменную, которая будет использоваться позже в скрипте.Если переменная существует ..... объект vs переменная, null vs. undefined
Однако в конце сценария, когда я пытаюсь определить, существует ли переменная как условие для оператора if, вещи не оценивают истину или ложь, как ожидалось. Что я здесь делаю неправильно?
// iterate through all docs assigning variables to templates and art
for (i = 0; i < documents.length; i++) {
var curDoc = app.activeDocument = app.documents[i];
var curDocNoExt = curDoc.name.split(".");
var workingName = curDocNoExt[0];
if (workingName.match(/^\d{5,6}$/) != null) {
var frontArt = app.documents[i];
var targetName = frontArt.name
} else {
if (workingName.match(/^\d{5,6}(b))$/) != null) {
var backArt = app.documents[i];
var backToggle = 1;
} else {
if (workingName.match(/^fkeep$/) != null) {
var frontTemp = app.documents[i];
} else {
if (workingName.match(/^fxkeep$/) != null) {
var frontSquare = app.documents[i];
} else {
if (workingName.match(/^bkeep$/) != null) {
var backTemp = app.documents[i];
} else {
if (workingName.match(/^bxkeep$/) != null) {
var backSquare = app.documents[i];
}
}
}
}
}
}
}
//use variables to do stuff!
if (backArt != null) {
app.activeDocument = backTemp;
var namedBackTemp = backTemp.duplicate(targetName + "B");
}
Как вы знаете, вы можете использовать ['else if'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else#Using_else_if), чтобы избежать все это гнездование. Это делает ваш код намного читабельнее. –
, если первое условие, если в вашем коде истинно, тогда переменная backart никогда даже не определена .... следовательно, вы получаете опорную ошибку – Sai
@Sai Они не получили бы ссылочную ошибку, это было бы просто «undefined». 'backArt' [hoisted] (https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) находится в верхней части области функций. –