このスクリプトの最初の部分は正しく動作しているようですが、すべてのドキュメントを繰り返し処理し、特定の正規表現パターンと一致する場合はそれを返しますスクリプトの後半で利用される特定の変数。変数が存在する場合.....オブジェクト対変数、null対undefined
しかし、スクリプトの最後に変数がif文の条件として存在するかどうかは、期待通りに評価されません。 ここで何が間違っていますか? JavaScriptのundefined
で
// 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)を使って回避することができますこの入れ子のすべて。それはあなたのコードをもっと読みやすくします。 –
あなたのコードで最初のif条件が真であれば、変数backartは決して定義されません....したがって、参照エラー – Sai
@Sai参照エラーを取得しません。 'backArt'は関数スコープの先頭に[hoisted](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting)されています。 –