function func1(引数) { 。。。。 } 引数が、数値、文字列、真偽値の場合は、値渡し(値を複製して、関数に渡す)。 引数が、オブジェクト、配列の場合は、参照渡し(引数に指定したものが、書き変わる)。 ※これは、GASの特性ではなく、JavaScriptの仕様。 GASで競技プログラミングの順位付けを行うプログラムを書いているのですが、冗長になっている部分を別関数にしてくくり出すとLINE APIのreplyが使えなくなりました。自分がLINE上でキーワードを言ったらその時点での直近の大会の順位を吐いてくれる仕組みです。具体的にLogger.&nb 2018/10/31 ãè¨è¿°ãã¾ããè¤æ°ã®å¼æ°ãè¨è¿°ããå ´åã¯ã«ã³ã(,)ã§åºåã£ã¦è¨è¿°ãã¾ãã, 颿°å´ã®ä»®å¼æ°ã«ã¯å¤æ°ãè¨è¿°ãã¾ãã颿°ãå¼ã³åºãå´ããæ¸¡ããã¦ããå¤ã¯ã弿°ã®ã¨ããã«è¨è¿°ãã夿°ã«æ ¼ç´ããã¾ãã, 颿°ãå¼ã³åºãå´ã¯æ¬¡ã®ããã«è¨è¿°ãã¾ããå¼ã³åºã颿°åãè¨è¿°ãããã¨ã« ( 㨠) ã®éã«é¢æ°ã«æ¸¡ã弿°(å®å¼æ°)ãè¨è¿°ãã¾ããè¤æ°ã®å¼æ°ãè¨è¿°ããå ´åã¯ã«ã³ã(,)ã§åºåã£ã¦è¨è¿°ãã¾ãã, 颿°ãå¼ã³åºãå´ã®å®å¼æ°ã«ã¯å¤ãå¼ãè¨è¿°ãã¾ãã颿°ãå¼ã³åºãæã«è¨è¿°ããå¤ã¯é¢æ°ã¸æ¸¡ããã¾ãã, 次ã®ãµã³ãã«ãè¦ã¦ãã ããã, 颿°ãå¼ã³åºãæã«å¼æ°ã¨ã㦠'Hello' ãè¨è¿°ãã¦ãã¾ãã颿°ãå¼ã³åºãããã¨æ¸¡ããã¦ããå¤ã夿° msg ã«æ ¼ç´ããã¾ãã颿°ã®å¼æ°ã«è¨è¿°ãã夿°ã¯ã颿°ã®ãããã¯å ã§åç §ãããã¨ãã§ãã¾ããä»åã¯å¼æ°ã«æ ¼ç´ãããå¤ãã³ã³ã½ã¼ã«ã«åºåãã¦ãã¾ãã, ãªã JavaScript ã§é¢æ°ã®å®ç¾©ã§è¨è¿°ãã弿°ã«ã¯å¤æ°ã®å®£è¨ã®å ´åã¨åãããã«ãã¼ã¿åãæå®ãããã¨ã¯ããã¾ããããã®çºãã©ã®ãããªãã¼ã¿åã®å¤ã§ãã£ã¦ãåãåããã¨ãã§ãã¾ããå ã»ã©ã®ãµã³ãã«ã§ã¯æåã«é¢æ°ãå¼ã³åºããæã¯æååã® 'Hello' ãããã¦æ¬¡ã«é¢æ°ãå¼ã³åºããæã¯æ°å¤ã® 100 ã弿°ã«æå®ãã¦é¢æ°ãå¼ã³åºãã¦ãã¾ãã, JavaScript ã®é¢æ°ã§ã¯ã颿°ãå¼ã³åºãæã«è¨è¿°ããå¤ã®æ°ã¨ãå¤ãåãã¨ã颿°ã®å¼æ°ã®æ°ãéã£ã¦ãã¦ãã¨ã©ã¼ã«ã¯ãªãã¾ãããä¾ãã°é¢æ°ã 2 ã¤ã®å¼æ°ãåãåãããã«å®ç¾©ãã¦ããã®ã«ã颿°ãå¼ã³åºãæã«å¤ã 1 ã¤ããæå®ããªãã£ãå ´åã颿°å´ã® 2 ã¤ã®ç®ã®å¼æ°ãåç §ãã㨠undefined ã¨ãªãã¾ãã, 颿°ã¯ name 㨠old ã® 2 ã¤ã®å¼æ°ãåãåãã¾ããæåã®é¢æ°ã®å¼ã³åºãã§ã¯å¤ã 2 ã¤æå®ãã¦å¼ã³åºãã¦ãã¾ãããæ¬¡ã®é¢æ°ã®å¼ã³åºãã§ã¯å¤ã 1 ã¤ã ãæå®ãã¦å¼ã³åºãã¦ãã¾ãããã®å ´åã§ãã¨ã©ã¼ã¨ã¯ãªãããå¤ã渡ããã¦ããªãã£ã弿°ãåç §ãã㨠undefined ã¨ãªãã¾ãã, å ã»ã©ã¨ã¯éã«é¢æ°ã¯ 2 ã¤ã®å¼æ°ãåãåãããã«å®ç¾©ãã¦ããã®ã«ã颿°ãå¼ã³åºãæã«å¤ã 3 ã¤æå®ããå ´åã 3 ã¤ç®ã®å¤ã¯åã«ä½¿ç¨ãããªãã ãã¨ãªãã¾ãã, 颿°ã¯ name 㨠old ã® 2 ã¤ã®å¼æ°ãåãåãã¾ããæåã®é¢æ°ã®å¼ã³åºãã§ã¯å¤ã 2 ã¤æå®ãã¦å¼ã³åºãã¦ãã¾ãããæ¬¡ã®é¢æ°ã®å¼ã³åºãã§ã¯å¤ã 3 ã¤æå®ãã¦å¼ã³åºãã¦ãã¾ãããã®å ´åã§ãã¨ã©ã¼ã¨ã¯ãªããã 3 ã¤ç®ã®å¼æ°ã¯ä»åã®å ´åã¯ç¹ã«ä½¿ç¨ããã¾ããã, â» é¢æ°ã«æ¸¡ããã¦ããå¤ã¯ arguments ã¨ããç¹å¥ãªãªãã¸ã§ã¯ãã«æ ¼ç´ããã¾ãã颿°ã§ããã¤ã®å¼æ°ãåãåãããã«è¨å®ãã¦ããã¨ãã¦ãã arguments ãªãã¸ã§ã¯ããåç §ãããã¨ã§å¼ã³åºãå´ããæ¸¡ããããã¹ã¦ã®å¼æ°ã®å¤ãåç §ãããã¨ãã§ãã¾ãã arguments ã«ã¤ãã¦ã¯å¥ã®ãã¼ã¸ã§è§£èª¬ãã¾ãã, 颿°ãå¼ã³åºãã¨ãã«è¨è¿°ããå¤ã®æ°ã颿°ã®å¼æ°ã®æ°ãããå°ãªãã£ãå ´åãå¤ãæ ¼ç´ãããªãã£ã弿°ãåç §ãã㨠undefined ã¨ãªã£ã¦ãã¾ããããã®ãããªå ´åã«ã颿°ã®å¼æ°ã«å¯¾ãã¦ããã©ã«ãå¤ãè¨å®ãã¦ãããã¨ãã§ãã¾ãã, 弿°ã«ããã©ã«ãå¤ãè¨å®ãã¦ããã¨ã颿°ãå¼ã³åºãããæã«å¤ã渡ããã¦ããªãã£ã弿°ã«ã¯ä»£ããã«ããã©ã«ãå¤ãä»£å ¥ããã¾ãã, 颿°ã® 2 ã¤ã®ç®ã®å¼æ°ã«ããã©ã«ãå¤ãè¨å®ããã¦ãã¾ãã颿°ãå¼ã³åºãã¨ãã«ãå¤ã 2 ã¤æå®ããå ´åã¯ãã®å¤ããã®ã¾ã¾ä½¿ç¨ããã¾ãããå¤ã 1 ã¤ã ãæå®ããå ´åã«ã¯ 2 ã¤ç®ã®å¼æ°ã«ã¯ããã©ã«ãå¤ã§ãã 10 ãæ ¼ç´ããã¾ãã, ãªã次ã®ããã« 1 çªç®ã®å¼æ°ã«ããã©ã«ãå¤ãè¨å®ãã 2 çªç®ã®å¼æ°ã«ããã©ã«ãå¤ãè¨å®ããªãã¦ã¨ã©ã¼ã¨ã¯ãªãã¾ãããã颿°ãå¼ã³åºãæã«å¤ã 1 ã¤ã ãæå®ããã¨ã颿°ã® 1 çªç®ã®å¼æ°ã«å¤ãä»£å ¥ãã㦠2 çªç®ã®å¼æ°ã¯ undefined ã¨ãªãã¾ãã, 颿°ã®å¼ã³åºãå´ããæ¸¡ããã¦ããå¤ã¯ãããã©ã«ãå¤ãè¨å®ããã¦ãããã©ããã«é¢ãããã颿°ã«è¨è¿°ãããé çªã§å¼æ°ã¸å¤ãä»£å ¥ããã¦ããã¾ãã, JavaScript ã§ã¯é¢æ°ã§å¼æ°ãè¨è¿°ããã¨ãã«ã弿°ã®åã« '...' ãä»ããã¨ãå¼ã³åºãå´ããæ¸¡ããã¦ãããã¹ã¦ã®å¤ãè¦ç´ ã¨ããé åãè¦ç´ ã«æ ¼ç´ããã¾ããä¾ãã°å¼ã³åºãå´ã§å¤ã 2 ã¤æå®ãã¦é¢æ°ãå¼ã³åºããæã¯ 2 ã¤ã®è¦ç´ ãæã¤é åã弿°ã«æ ¼ç´ããã 3 ã¤æå®ããå ´å㯠3 ã¤ã®è¦ç´ ãæã¤é åã弿°ã«æ ¼ç´ããã¾ãã '...'ãä»ãã弿°ã Rest Parameter ã¨å¼ã³ã¾ãã, 颿°ãå¼ã³åºãã¨ãã«ä»»æã®æ°ã®å¤ã弿°ã¨ãã¦æ¸¡ããã¨ãã§ãã¾ãã, 颿°ã§ã¯å¼ã³åºãå´ããæ¸¡ããã¦ããå¤ãé çªã«å ç®ãã¦ããçµæãå¼ã³åºãå ã«è¿ãã¦ãã¾ãã弿°ã«ã¯é åã¨ãã¦æ¸¡ããã¦ããå¤ãæ ¼ç´ããã¦ããã®ã§ãå¤ã®æ°ã¯é åã® length ããããã£ãåç §ãããã¨ã§ç¢ºèªã§ãã¾ãã( length ããããã£ã«ã¤ãã¦ã¯ãé åã®è¦ç´ ã®æ°ãåå¾ããããåç §ããã¦ãã ãã)ã, é常ã®å¼æ°ã¨çµã¿åããã¦ä½¿ç¨ãããã¨ãã§ãã¾ããæ¸å¼ã¯æ¬¡ã®éãã§ãã, ãã®å ´åã颿°ã®å¼ã³åºãå´ããæ¸¡ããã¦ããæåã®å¤ã弿°1ã¸æ ¼ç´ããã 2 çªç®ã®å¤ã弿°2ã¸æ ¼ç´ãããæ®ãã®å¤ããã¹ã¦å¼æ°3ã«æ ¼ç´ããã¾ãã '...' ãä»ãããã夿°ã¯å¿ ãæå¾ã«è¨è¿°ãã¦ãã ããã, JavaScript ã§å¼æ°ã使ã£ã¦é¢æ°ã¸å¤ãæ¸¡ãæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ããã, åå¿è ï½ä¸ç´è ã®æ¹ã対象ã¨ããããã°ã©ãã³ã°æ¹æ³ãéçºç°å¢ã®æ§ç¯ã®è§£èª¬ãè¡ããµã¤ãã®éå¶ãè¡ã£ã¦ãã¾ãã.