JavaScript中兩個(gè)感嘆號(hào)的作用說(shuō)明
更新時(shí)間:2011年12月28日 23:58:43 作者:
用兩個(gè)感嘆號(hào)的作用就在于,如果明確設(shè)置了o中flag的值(非null/undefined/0""/等值),自然test就會(huì)取跟o.flag一樣的值;如果沒(méi)有設(shè)置,test就會(huì)默認(rèn)為false,而不是null或undefined
先用一個(gè)簡(jiǎn)單的例子說(shuō)明:
var o={flag:true};
var test=!!o.flag;//等效于var test=o.flag||false;
alert(test);
由于對(duì)null與undefined用!操作符時(shí)都會(huì)產(chǎn)生true的結(jié)果,所以用兩個(gè)感嘆號(hào)的作用就在于,如果明確設(shè)置了o中flag的值(非null/undefined/0""/等值),自然test就會(huì)取跟o.flag一樣的值;如果沒(méi)有設(shè)置,test就會(huì)默認(rèn)為false,而不是null或undefined。
在jQuery中比較經(jīng)典的例子如下:(jQuery 1.7.0.js: Line 748)
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;
}
在使用grep函數(shù)的時(shí)候,如果給出了第三個(gè)參數(shù)且非null/undefined/0""/等值,則inv為true,否則為false。這樣做的目的就是保證inv和retVal的值都只能在true/false中取,而非其它值,為后續(xù)判斷提供便利。
復(fù)制代碼 代碼如下:
var o={flag:true};
var test=!!o.flag;//等效于var test=o.flag||false;
alert(test);
由于對(duì)null與undefined用!操作符時(shí)都會(huì)產(chǎn)生true的結(jié)果,所以用兩個(gè)感嘆號(hào)的作用就在于,如果明確設(shè)置了o中flag的值(非null/undefined/0""/等值),自然test就會(huì)取跟o.flag一樣的值;如果沒(méi)有設(shè)置,test就會(huì)默認(rèn)為false,而不是null或undefined。
在jQuery中比較經(jīng)典的例子如下:(jQuery 1.7.0.js: Line 748)
復(fù)制代碼 代碼如下:
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;
}
在使用grep函數(shù)的時(shí)候,如果給出了第三個(gè)參數(shù)且非null/undefined/0""/等值,則inv為true,否則為false。這樣做的目的就是保證inv和retVal的值都只能在true/false中取,而非其它值,為后續(xù)判斷提供便利。
相關(guān)文章
JavaScript中的 attribute 和 jQuery中的 attr 方法淺析
這篇文章主要介紹了JavaScript中的 attribute 和 jQuery中的 attr 方法淺析,需要的朋友可以參考下2017-01-01ES2020 已定稿,真實(shí)場(chǎng)景案例分析
許多新的特性被提議包括在 ES2020版本中。好消息是這些已經(jīng)已經(jīng)敲定。 現(xiàn)在,我們獲得了最終定稿的功能清單,它們將在被批準(zhǔn)發(fā)布之后出現(xiàn)在備受期待的 ES2020 中,具體內(nèi)容詳情,大家可以閱讀下本文2020-05-05js中利用cookie實(shí)現(xiàn)記住密碼功能
這篇文章主要為大家詳細(xì)介紹了js中利用cookie實(shí)現(xiàn)記住密碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10js導(dǎo)入導(dǎo)出excel(實(shí)例代碼)
這篇文章主要是對(duì)js導(dǎo)入導(dǎo)出excel的實(shí)例代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11Javascript delete 引用類(lèi)型對(duì)象
很少使用javascript的delete,最近因?yàn)橐粋€(gè)小bug發(fā)現(xiàn)刪除引用類(lèi)型對(duì)象的時(shí)候有一點(diǎn)不同2013-11-11js判斷文件類(lèi)型大小并給出提示的實(shí)現(xiàn)方法
下面小編就為大家分享一篇js判斷文件類(lèi)型大小并給出提示的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01標(biāo)準(zhǔn)的js無(wú)縫滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了標(biāo)準(zhǔn)的js無(wú)縫滾動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08