[问题] 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