[問題] Javascript語法請教

作者: forkome (初心者)   2014-02-14 17:39:55
請問各位大大,最近在學javascript
所以去找版友所寫的作品來看
其中有幾句用google很難找到
return !!window.WebGLRenderingContext
一個驚嘆號是把true變false,但兩個驚嘆號的用法是?
因為是看別人的作品,所以思考方式都是逆思考
若想查類似!!的問題,或是了解較進階的用法
想請教大大們都是如何學習呢
目前會一些基本的用法if for及變數域、委派的概念
但很多較進階的用法都會將function給物件化,如JQuery就是這樣用
市面上的書大多都講較正常的使用方式,對於觀念都比較少提到
現在卡在要看別人的Code,但看不太懂,由下往上的學習好像又是錯誤的方式
不知有沒有比較推薦的網站還是書本可以學習嗎? 謝謝
作者: s25g5d4 (function(){})()   2014-02-14 17:48:00
一個便當吃不夠都要吃兩個了 驚嘆號一個不對再補一個就是... true 還是 true, false 還是 false
作者: mrbigmouth (大嘴先生)   2014-02-14 17:50:00
兩個驚嘆號可以把原本不是布林值的物件轉換成布林值!!'' => false !!{} => true以你舉的例子, 其目的應該是要檢查瀏覽器內是否已存在WebGLRenderingContext定義 不存在就返回false存在就返回true這是用來防止相同script被載入/執行兩次的常見作法
作者: forkome (初心者)   2014-02-16 19:36:00
M大謝謝回覆,可以再請教一下,防止被執行兩次的意思嗎而在設計上,為何不直接window.WebGLRenderingContext回傳true或false呢?
作者: mrbigmouth (大嘴先生)   2014-02-17 13:58:00
WebGLRenderingContext可能直接就是該程式的物件本身你如果直接存另一個變數為true/false就多佔一個廣域變數
作者: taikobo (勉強になるなぁ...)   2014-02-17 18:23:00
原來還有這種用法,受教了
作者: forkome (初心者)   2014-02-18 11:40:00
目前的理解為window.WebGLRenderingContext可能會是null或是undefined的情況發生,故「!」可將轉Boolean值不知這樣解理對不對,感謝M大的回覆
作者: s25g5d4 (function(){})()   2014-02-18 12:26:00
作者: mrbigmouth (大嘴先生)   2014-02-18 19:40:00
對 關於js書籍 推薦歐萊禮的javascript設計模式跟javascript優良部份兩本

Links booklink

Contact Us: admin [ a t ] ucptt.com