Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回值返回为未定义_Javascript_Adobe_Return Value_Adobe Illustrator_Object Literal - Fatal编程技术网

Javascript 返回值返回为未定义

Javascript 返回值返回为未定义,javascript,adobe,return-value,adobe-illustrator,object-literal,Javascript,Adobe,Return Value,Adobe Illustrator,Object Literal,我正在尝试为Illustrator编写一个脚本,它将从对象中读取我需要的颜色,然后在需要的地方用该颜色填充模板。它一直以未定义的状态返回。我对Javascript很陌生,有什么想法我做错了什么 我尝试过以newCMYKColor[stockColor]的身份返回,newCMYKColor[stockColors]并返回stockColor[newCMYKColor] convertRoofColorToCMYK = function(stockColor) { var newCMYKColo

我正在尝试为Illustrator编写一个脚本,它将从对象中读取我需要的颜色,然后在需要的地方用该颜色填充模板。它一直以未定义的状态返回。我对Javascript很陌生,有什么想法我做错了什么

我尝试过以
newCMYKColor[stockColor]
的身份返回,
newCMYKColor[stockColors]
并返回
stockColor[newCMYKColor]

convertRoofColorToCMYK = function(stockColor) {
  var newCMYKColor = new CMYKColor(),
    stockColors = {
      BlackPoly: [80, 72, 68, 100],
      LightBlue: [100, 43, 0, 30],
      DarkBluePoly: [95, 74, 7, 44],
      PurplePoly: [82, 98, 0, 12],
      GreenPoly: [90, 12, 95, 40],
      YellowPoly: [0, 19, 89, 0],
      EcruPoly: [6, 13, 41, 4],
      OrangePoly: [0, 73, 98, 0],
      RedPoly: [7, 100, 82, 26],
      GreyPoly: [10, 4, 4, 14],
      WhitePoly: [0, 0, 0, 0]
    };
  try {
    newCMYKColor.cyan = stockColors[stockColor][0];
    newCMYKColor.magenta = stockColors[stockColor][1];
    newCMYKColor.yellow = stockColors[stockColor][2];
    newCMYKColor.black = stockColors[stockColor][3];
  } catch (e) {
    newCMYKColor.cyan = 0;
    newCMYKColor.magenta = 0;
    newCMYKColor.yellow = 0;
    newCMYKColor.black = 0;
  }
  return newCMYKColor;
};

roofColorCMYK = convertRoofColorToCMYK(Clipboard.roof_color);

if (!roofColorCMYK == undefined) {
  if (app.activeDocument.Layers["Tent Pieces"] &&
    app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"]) {
    for (i = 0; i < app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"].pathItems.length; i++) {
      app.activeDocument.Layers["Tent Pieces"].Layers["Roof Composite"].pathItems[i].fillColor = roofColorCMYK;
    } else {
      alert("sorry we are not able to fill the tent roof with the " +
        Clipboard.roof_color + " color.")
    }
convertRootColorToCmyk=函数(stockColor){
var newCMYKColor=new CMYKColor(),
股票颜色={
BlackPoly:[80,72,68,100],
浅蓝色:[100,43,0,30],
暗蓝色多边形:[95,74,7,44],
紫癜性:[82,98,0,12],
绿色保利:[90,12,95,40],
YellowPoly:[0,19,89,0],
埃克鲁波利:[6,13,41,4],
橙色球:[0,73,98,0],
红保利:[7100,82,26],
格雷波利:[10,4,4,14],
WhitePoly:[0,0,0,0]
};
试一试{
newCMYKColor.cyan=stockColors[stockColor][0];
newCMYKColor.magenta=stockColors[stockColor][1];
newCMYKColor.yellow=stockColors[stockColor][2];
newCMYKColor.black=stockColors[stockColor][3];
}捕获(e){
newCMYKColor.cyan=0;
newCMYKColor.magenta=0;
newCMYKColor.yellow=0;
newCMYKColor.black=0;
}
返回newCMYKColor;
};
rootcolorcmyk=convertRootColorToCmyk(剪贴板.roof\u颜色);
如果(!rootcolorcmyk==未定义){
如果(app.activeDocument.Layers[“帐篷碎片”]&&
app.activeDocument.Layers[“帐篷片”]。Layers[“屋顶复合材料”]){
对于(i=0;i

在我添加else/if语句之前,它告诉我在
if(app.activeDocument.Layers[“Tent-Pieces]”和&app.activeDocument.Layers[“Tent-Pieces”].Layers[“Roof Composite”])中未定义。
添加else/if语句之后,它每次都会给我警告。

请查看try-catch block的MDN规范

您必须记住,在try-catch块之后不会执行任何代码

我建议您通过以下方式更改代码:

try {
    newCMYKColor.cyan = stockColors[stockColor][0];
    newCMYKColor.magenta = stockColors[stockColor][1];
    newCMYKColor.yellow = stockColors[stockColor][2];
    newCMYKColor.black = stockColors[stockColor][3];

    return newCMYKColor;
  } catch (e) {
    newCMYKColor.cyan = 0;
    newCMYKColor.magenta = 0;
    newCMYKColor.yellow = 0;
    newCMYKColor.black = 0;

    return newCMYKColor;
  }
或者在末尾使用finally块(finally中的代码总是像以前一样执行)


我认为这个
!rootcolorcmyk==未定义的
(不是!)条件永远不会是
true
因为你正在将你的值转换为真实或虚假的值。而
convertRootColorToCmyk
永远不会返回未定义的值,因为你总是返回一个值。你能记录
RootColorCmyk
的值吗?这似乎有效!它不再给我一个未定义的值,但我认为我的Layers现在可能就是问题所在。谢谢!您可以指定任何资源来说明这一点吗?您必须记住,在try-catch块之后不会执行任何代码。?不是correct@ajuni880这就是我在阅读此MDN时所理解的。有一个特殊的异常相关子句,不管是否存在异常,它都会执行,这似乎很奇怪n异常,但这个构造实际上确实起到了作用。重要的一点不是finally子句总是执行,而是try…catch之后的普通代码不会执行。
try {
    newCMYKColor.cyan = stockColors[stockColor][0];
    newCMYKColor.magenta = stockColors[stockColor][1];
    newCMYKColor.yellow = stockColors[stockColor][2];
    newCMYKColor.black = stockColors[stockColor][3];
  } catch (e) {
    newCMYKColor.cyan = 0;
    newCMYKColor.magenta = 0;
    newCMYKColor.yellow = 0;
    newCMYKColor.black = 0;
  } finaly {
    return newCMYKColor;
  }