最近看書的時候,發現了這個現象
因為 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>

 

arrow
arrow
    全站熱搜

    wbkuo 發表在 痞客邦 留言(0) 人氣()