Re: [問題] js Function位置問題

看板Ajax作者 (鼎玉鉉)時間15年前 (2010/07/19 00:48), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《iam87king (沉默傷心)》之銘言: : 最近用了一個檢測js碼的service,發現被提了好多warning XD : 幾個印象比較深的提出來跟大家分享一下 : 1.parseInt : 平常習慣就是直接 var num = parseInt("123"); : 後來才發現原來parseInt第二個參數不填也會被報warning : 所以嚴謹一點的寫法應該是這樣 var num = parseInt("123", 10); 10就是10進位 : 2.逗號問題 : 我也不知道為什麼這樣有問題 : var context = { "a" : "Hello", "b" : "Reject", "c" : "Good Night" : ,"d" : "Nothing", "e" : "Ajax"}; : 改成這樣就沒有出現warning了 : var context = { "a" : "Hello", "b" : "Reject", "c" : "Good Night", : "d" : "Nothing", "e" : "Ajax"}; : 雖然都可以run,我也不知道到底差在哪 : 3.Function 位置 : 假設有二個Function : Function initPage(){ : sayHello(); : } : Function sayHello(){ : alert("Hello"); : } : 我知道這樣也是可以執行,但它還是說你的sayHello在被呼叫時尚未定義 : 所以想請問一下Function在被呼叫時尚未定義會不會造成什麼潛在的影響? 讓我來回答第三段問題 在javasscript中 所有的變數和 函數 都是隸屬於window全域物件下 所以 initPage() 就是window.initPage() sayHello() 就是window.sayHello() 所以 如果你前面加了window 或 self 無論你寫在什麼位子都可以call不會出錯 因為javascript允許 一個未定義的屬性或方法的存在值為undefine 但是當你執行到sayHello時 他的值已經是有定義的function了 如果你直接向上面那樣叫 當你在initPage裏call sayHello()時 實際上你執行了兩個動作 第一當時的sayHello是 undefine 第二()代表執行 所以 你等於是做了 undefine() 這樣一個動作 當然拉就出錯了 所以 在initPage裏 呼叫時 改成 window.sayHello() 應該就順利通過啦 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.14.24

07/19 08:16, , 1F
嘿嘿 你的第二句話有可以挑語病的地方 XD
07/19 08:16, 1F
文章代碼(AID): #1CGp1rPa (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1CGp1rPa (Ajax)