最近看書的時候,發現了這個現象
因為 JavaScript 會自動補上沒有打的分號,理論上這是一個很貼心的功能,但在下面這個例子卻會造成不可預期的回傳值
<script type="text/javascript"> function func () { return { name : "leo" }; } console.log(func()); // 結果為 undefined </script>
以上範例輸出的結果為 undefined,因為他被 JavaScript 解釋為下例的程式了
<script type="text/javascript"> function func () { return; { name : "leo" }; } console.log(func()); // 結果為 undefined </script>
雖然書中的結論是建議,最好將左括號都放在同一行
但因為我是習慣把左括號單獨一行和右括號對齊,所以實在無法同意這一點(請不要戰我,我知道這目前沒有定論)
不過 return 的時候,值要放在同一行才對,而且要記得自己加分號才是真的
所以我會改成以下的樣子
<script type="text/javascript"> function func () { var ret = { name : "leo" }; return ret; } console.log(func()); // 結果為 Object {name: "leo"} </script>
全站熱搜
留言列表