我正在瀏覽html 5的書,它包含js的這個tid位。雙重驚歎是什麼意思?在javascript中返回值的雙重感嘆號
return ! ! document.createElement('video').canPlayType;
我正在瀏覽html 5的書,它包含js的這個tid位。雙重驚歎是什麼意思?在javascript中返回值的雙重感嘆號
return ! ! document.createElement('video').canPlayType;
的!
操作者否定,並且次級!
否定inital否定的結果。這基本上將右側的任何內容都轉換爲布爾值(true或false)。
!false // true
!!false // false
因此,如果定義該方法則function
這是truthy,將被類型強制轉換成true
。
document.createElement('video').canPlayType
所以上面的函數返回。我們不需要一個函數,我們需要一個明確的布爾值,所以我們兩次否定它,並且因爲function
不是虛假的(0,null,false,空字符串,NaN),所以它支持此方法的瀏覽器返回true。
!!document.createElement('video').canPlayType // true
如果該方法不受支持,瀏覽器將返回undefined
。 !undefined
是真實的,!true
是假的,所以!!document.createElement('video').LOL
將返回false
雙感嘆號是一個JavaScript招返回true /輸入虛假不管。在你的例子中,如果瀏覽器不支持視頻標籤,它將返回undefined。 !未定義是真的。所以!! undefined是錯誤的。如果瀏覽器支持視頻,它將返回true。 !!真實也是如此。這使您不必處理未定義的情況。
必須愛它,在編程語言中有用的雙重否定。我的英語老師說永遠不要使用雙重否定。 「我不想無所事事。」成爲現在可能有意義的句子。 :) – 2010-12-22 19:07:33
我可能是一個想法,首先嚐試搜索之前詢問stackoverflow。 http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript – KooiInc 2010-12-22 19:07:36