[問題] Javascript語法請教

看板Ajax作者 (初心者)時間11年前 (2014/02/14 17:39), 編輯推噓6(6015)
留言21則, 4人參與, 最新討論串1/1
請問各位大大,最近在學javascript 所以去找版友所寫的作品來看 其中有幾句用google很難找到 return !!window.WebGLRenderingContext 一個驚嘆號是把true變false,但兩個驚嘆號的用法是? 因為是看別人的作品,所以思考方式都是逆思考 若想查類似!!的問題,或是了解較進階的用法 想請教大大們都是如何學習呢 目前會一些基本的用法if for及變數域、委派的概念 但很多較進階的用法都會將function給物件化,如JQuery就是這樣用 市面上的書大多都講較正常的使用方式,對於觀念都比較少提到 現在卡在要看別人的Code,但看不太懂,由下往上的學習好像又是錯誤的方式 不知有沒有比較推薦的網站還是書本可以學習嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.249.154.130

02/14 17:48, , 1F
一個便當吃不夠都要吃兩個了 驚嘆號一個不對再補一個
02/14 17:48, 1F

02/14 17:48, , 2F
就是... true 還是 true, false 還是 false
02/14 17:48, 2F

02/14 17:50, , 3F
兩個驚嘆號可以把原本不是布林值的物件轉換成布林值
02/14 17:50, 3F

02/14 17:51, , 4F
!!'' => false !!{} => true
02/14 17:51, 4F

02/14 17:52, , 5F
以你舉的例子, 其目的應該是要檢查瀏覽器內是否已存在
02/14 17:52, 5F

02/14 17:52, , 6F
WebGLRenderingContext定義 不存在就返回false
02/14 17:52, 6F

02/14 17:52, , 7F
存在就返回true
02/14 17:52, 7F

02/14 17:53, , 8F
這是用來防止相同script被載入/執行兩次的常見作法
02/14 17:53, 8F

02/16 19:36, , 9F
M大謝謝回覆,可以再請教一下,防止被執行兩次的意思嗎
02/16 19:36, 9F

02/16 19:37, , 10F
而在設計上,為何不直接window.WebGLRenderingContext
02/16 19:37, 10F

02/16 19:37, , 11F
回傳true或false呢?
02/16 19:37, 11F

02/17 13:58, , 12F
WebGLRenderingContext可能直接就是該程式的物件本身
02/17 13:58, 12F

02/17 13:59, , 13F
你如果直接存另一個變數為true/false就多佔一個廣域變
02/17 13:59, 13F

02/17 13:59, , 14F
02/17 13:59, 14F

02/17 18:23, , 15F
原來還有這種用法,受教了
02/17 18:23, 15F

02/18 11:40, , 16F
目前的理解為window.WebGLRenderingContext可能會是null
02/18 11:40, 16F

02/18 11:41, , 17F
或是undefined的情況發生,故「!」可將轉Boolean值
02/18 11:41, 17F

02/18 11:41, , 18F
不知這樣解理對不對,感謝M大的回覆
02/18 11:41, 18F

02/18 12:26, , 19F
02/18 12:26, 19F

02/18 19:40, , 20F
對 關於js書籍 推薦歐萊禮的javascript設計模式跟ja
02/18 19:40, 20F

02/18 19:40, , 21F
vascript優良部份兩本
02/18 19:40, 21F
文章代碼(AID): #1I_UHknV (Ajax)
文章代碼(AID): #1I_UHknV (Ajax)