遇到未定义的变量时,模板化的html会返回服务器错误

时间:2012-07-28 17:11:29

标签: google-apps-script

嗨我想知道这是否是预期的行为:

<html>
  <head>
  </head>
  <body>
    <?if(a){
      Logger.log("a ="+a)?>
      <table>
        <tr>
          <th>First Name</th>
          <th>Last Name</th>
          <th>Id</th>
        </tr>
        <tr>
          <td><input type='text' name=firstName id='firstNameToEdit' /></td>
          <td><input type='text' name=lastName id='lastNameToEdit' /></td>
          <td><label id='down_id'></label></td>
        </tr>
      </table>
    <?}else{Logger.log("a="+a)}?>
  </body>  
</html>

当定义a时,我得到日志中a的值,并且每个事件都按预期显示 但当我离开未定义时,执行似乎停止在if(a)并且log没有显示任何内容。

我像这样提供html:

  var t = HtmlService.createTemplateFromFile('test');
  return t.evaluate();

当我这样服务时:

  var t = HtmlService.createTemplateFromFile('test');
  t.a = b;
  return t.evaluate();

where(b:{undefined,null}) 然后,如果我记录html模板内部的值,我得到a = null(在两种情况下)。 看来你不能在模板中有一个未定义的变量。

P.S。我真的很感激在编辑器中关闭自动识别的方法

1 个答案:

答案 0 :(得分:1)

如果在编辑器中运行doGet()方法,则应该看到错误:

  

ReferenceError:未定义“a”。

在JavaScript中,您无法引用不存在的变量。要解决此问题,您可以将if情况更改为:

<? if (this.a) {

由于this始终被定义为当前对象/范围。