ECMA6 template literals
人類的語言有時候會朝更懶惰或是更有效率的方向演進,像我很久以前曾分享過,西班牙語南部的Andaluz,常把gracias(謝謝)省略成gracia,he comido(吃飽了)省略成he comio。
人類幫機器設計的程式語言其實也可以這樣來理解,像我今天學JavaScript進化到ECMA 6的語法,它在處理字串時用${變數}就可以處理字串裡的變數了,這種寫法就比起舊的用法就更為懶惰和有效率。 我原本在線上課程看到這段語法的變化時,很快就能理解,覺得應該不難、蠻容易的,甚至心中興起偷懶「這麼簡單,不用練吧?」的壞壞念頭。
不過我心知道和學習人類語言一樣,學英文和學西文時,如果學了一堆文法和單字,沒有去唸出來寫出來,或是沒有去和人溝通是不可能學好的,而且事實上程式語言的文法和單字也比人類的語言少得多,所以我就乖乖去敲鍵盤練習了一下這個ECMA6簡單的字串新語法。
沒想到乖乖的,這麼簡單竟然跑不出來,我的變數仍是變數,並沒有帶出宋、韓、蔡三個人的名字!! 後來花點力氣查了一下,才發現新語法的引號用的是back-tick(重音符號,鍵盤最左上角),而舊語法用的是看起來非常像,但實際上不一樣的single-quotes(單括號),最後改用back-tick,終於在字串裡正確處理變數。
這過程也意識到一件事,平常在電視媒體狂轟炸三個人的名字時,都沒有感覺,直到今天用實體鍵盤的無蝦米拆字,打字打到宋楚瑜、韓國瑜、蔡英文三個人的名字時,才想到宋楚瑜和韓國瑜都是同一個瑜,不過搞不好大家第一時間就意識到了也不一定。
我們在上課、讀書、上網…特別是電視上,或多或少都會看到一些我們想像起來很簡單的事情,但是實際去做時,常常不會是想像中那樣簡單,是需要花力氣去克服一些空想不到的困難,當然也能獲得空想不到的樂趣。