js中两个感叹号的原理与用法分析
生活随笔
收集整理的這篇文章主要介紹了
js中两个感叹号的原理与用法分析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在javascript中有時(shí)會(huì)看到有兩個(gè)!!的用法
var?foo;?? alert(!foo);//undifined情況下,一個(gè)感嘆號(hào)返回的是true;?? alert(!goo);//null情況下,一個(gè)感嘆號(hào)返回的也是true;?? var?o={flag:true};?? var?test=!!o.flag;//等效于var?test=o.flag||false;?? alert(test);??
grep:?function(?elems,?callback,?inv?)?{?? ????????var?ret?=?[],?retVal;?? ????????inv?=?!!inv;?? ?? ????????//?Go?through?the?array,?only?saving?the?items?? ????????//?that?pass?the?validator?function?? ????????for?(?var?i?=?0,?length?=?elems.length;?i?<?length;?i++?)?{?? ????????????retVal?=?!!callback(?elems[?i?],?i?);?? ????????????if?(?inv?!==?retVal?)?{?? ????????????????ret.push(?elems[?i?]?);?? ????????????}?? ????????}?? ?? ????????return?ret;?? ????}??
? ? ? ? ?
? ? ? ? ? 這段例子,演示了在undifined和null時(shí),用一個(gè)感嘆號(hào)返回的都是true,用兩個(gè)感嘆號(hào)返回的就是false,所以兩個(gè)感嘆號(hào)的作用就在于,如果明確設(shè)置了變量的值(非null/undifined/0/""等值),結(jié)果就會(huì)根據(jù)變量的實(shí)際值來返回,如果沒有設(shè)置,結(jié)果就會(huì)返回false。
?
? ? ?這是jquery中一個(gè)比較經(jīng)典的例子,
? ? ?在使用grep函數(shù)的時(shí)候,如果給出了第三個(gè)參數(shù)且非null/undefined/0""/等值,則inv為 ? ? true,否則為false。這樣做的目的就是保證inv和retVal的值都只能在true/false中取,而非其它值,為后續(xù)判斷提供便利。
總結(jié)
以上是生活随笔為你收集整理的js中两个感叹号的原理与用法分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS 移动端触屏滑动
- 下一篇: 彻底搞懂JS无缝滚动代码