Re: [問題] js Function位置問題
※ 引述《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
07/19 08:16, 1F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章
26
79