第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是什么 ?。。ú皇牵㎎avaScript中的運算符?

是什么 !?。ú皇牵㎎avaScript中的運算符?

慕姐8265434 2019-05-23 10:47:44
是什么 !?。ú皇牵㎎avaScript中的運算符?我看到一些代碼似乎使用了一個我無法識別的運算符,以兩個感嘆號的形式出現(xiàn),如下所示:!!。有人可以告訴我這個運營商的作用嗎?我看到這個的背景是,this.vertical = vertical !== undefined ? !!vertical : this.vertical;
查看完整描述

4 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊

這是進(jìn)行類型轉(zhuǎn)換的一種非常模糊的方式。

!不是。所以!trueIS false,和!falsetrue。!0是的true!1是的false。

所以你要將一個值轉(zhuǎn)換為布爾值,然后將其反轉(zhuǎn),然后再將其反轉(zhuǎn)。

// Maximum Obscurity:val.enabled = !!userId;// Partial Obscurity:val.enabled = (userId != 0) ? true : false;
// And finally, much easier to understand:val.enabled = (userId != 0);


查看完整回答
反對 回復(fù) 2019-05-23
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗 獲得超3個贊

泡一些茶:

!!不是運營商。它是兩用的!- 這是邏輯“非”運算符。


理論上:

! 確定價值不是什么的“真相”:

  • 事實是,這false不是true(這就是為什么會!false導(dǎo)致true

  • 事實是,這true不是false(這就是為什么會!true導(dǎo)致false


!!確定價值不是什么的“真相” :

  • 事實是,這true不是沒有 true(這就是為什么會!!true導(dǎo)致true

  • 事實是,這false不是沒有 false(這就是為什么會!!false導(dǎo)致false


我們希望在比較中確定的是關(guān)于參考值的“真實性” ,而不是參考本身的。有一個用例我們可能想知道一個值的真相,即使我們期望值是false(或假的),或者我們期望值不是typeof boolean。


在實踐中:

考慮一個簡潔的功能,通過動態(tài)類型(又名“鴨子打字”)檢測功能功能(在這種情況下,平臺兼容性)。我們想編寫一個函數(shù),true如果用戶的瀏覽器支持HTML5 <audio>元素,則返回該函數(shù),但如果<audio>未定義,我們不希望該函數(shù)拋出錯誤; 我們不想用來try ... catch處理任何可能的錯誤(因為它們很嚴(yán)重); 而且我們也不想在函數(shù)內(nèi)部使用一個不能一致地揭示該特性的真相的檢查(例如,即使不支持HTML5 ,document.createElement('audio')仍會創(chuàng)建一個被調(diào)用的元素)。<audio><audio>


以下是三種方法:

// this won't tell us anything about HTML5 `<audio>` as a featurevar foo = function(tag, atr) { return document.createElement(tag)[atr]; }
// this won't return true if the feature is detected (although it works just fine)var bar = function(tag, atr)
 { return !document.createElement(tag)[atr]; }// this is the concise, feature-detecting solution we wantvar baz = function(tag, atr)
  { return !!document.createElement(tag)[atr]; }foo('audio', 'preload'); // returns "auto"bar('audio', 'preload');
   // returns falsebaz('audio', 'preload'); // returns true

每個函數(shù)接受a <tag>和a attribute查找的參數(shù),但它們每個都根據(jù)比較確定的值返回不同的值。

但等等,還有更多!

你們中的一些人可能已經(jīng)注意到,在這個具體的例子中,人們可以使用稍微更高效的方法來檢查屬性,以檢查相關(guān)對象是否具有屬性。有兩種方法可以做到這一點:

// the native `hasOwnProperty` methodvar qux = function(tag, atr) { return document.createElement(tag).hasOwnProperty(atr); }
// the `in` operatorvar quux = function(tag, atr) { return atr in document.createElement(tag); }qux('audio', 'preload');  
// returns truequux('audio', 'preload'); // returns true

我們離題了......

無論這些情況多么罕見,可能存在一些場景,其中最簡潔,最高性能且因此最優(yōu)選的true從非布爾值,可能未定義的值獲得的方法確實是通過使用!!。希望這可笑地清除它。


查看完整回答
反對 回復(fù) 2019-05-23
  • 4 回答
  • 0 關(guān)注
  • 911 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號