0

こんにちは私はこれが予想される動作であるかどうか疑問に思っていました:

<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の値が表示され、すべてが期待どおりに表示されますが、aが定義されていない場合、実行はif(a)で停止し、ログには何も表示されません。

私はこのようにhtmlを提供します:

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

私がこのようにそれを提供するとき:

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

ここで(b:{undefined、null})次に、htmlテンプレート内の値をログに記録すると、a = nullになります(どちらの場合も)。テンプレート内に未定義の変数を含めることはできないようです。

PS私は本当にエディターで自動インデントをオフにする方法をいただければ幸いです

4

1 に答える 1

1

エディターでdoGet()メソッドを実行すると、次のエラーが表示されます。

ReferenceError:「a」が定義されていません。

JavaScriptでは、存在しない変数を参照することはできません。これを回避するには、ifケースを次のように変更します。

<? if (this.a) {

thisは常に現在のオブジェクト/スコープとして定義されているためです。

于 2012-07-30T19:29:20.413 に答える