javascript - 如果变量存在......对象与变量,null与未定义

标签 javascript photoshop-script

该脚本的第一部分似乎工作正常,它会迭代每个文档,如果文档名称与特定的正则表达式模式匹配,它会为其提供一个特定的变量,以便稍后在脚本中使用。

但是,在脚本末尾,当我尝试判断某个变量是否作为 if 语句的条件存在时,结果并没有按预期评估 true 或 false。 我在这里做错了什么?

// 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");
}

最佳答案

在 javascript 中,undefined 是 falsey,因此您可以在 if 语句中使用变量,如下所示:

var var1 = '', // can be anything
    var2; // this is an undefined var
if (var1){ // var1 has been initialized so this evaluates to true
  doSomething(); // this will execute
}
if (var2){ // var2 is undefined, so it evaluates as false
  doSomethingElse(); // this will not execute
}

但是,更好的做法是使用 typeof,它返回对象类型的字符串:

var var1 = '';
var var2 = {};

typeof var1 == 'string';
typeof var2 == 'object';
typeof var3 == 'undefined';

if (typeof var1 !== 'undefined'){
  doSomething(); // this gets executed because var1 is a string
}

希望这能让您更好地理解

关于javascript - 如果变量存在......对象与变量,null与未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38646942/

相关文章:

html - 如何在photoshop图片中获得相同的字体效果

javascript - Photoshop 脚本 - 如何获取图层集(组)可见部分的边界?

javascript - 如何在 Photoshop javascript 中定义 Canvas 增加百分比

javascript - 引用了一个元素,如何检测它何时附加到文档中?

javascript - 表达式正则 - 反向引用

javascript - 输入的 Photoshop Script 返回值

photoshop - __adobe_cep__.showDevTools() 自 14.2 更新后不起作用

javascript - 如果参数包含斜杠 '/',则使用 StateProvider 的路由将被重定向

javascript - 这个 JavaScript Function.call 方法在做什么?

java - sun.org.mozilla.javascript.internal.EcmaError : ReferenceError