今天看vue.js源**,其中有一段和enumerable相關的**,如下所示:
/**
* define a property.
*/function def (obj, key, val, enumerable) );
}
其中!!enumerable中"!!"是個乙個很神奇的小技巧。我們在提供介面給別人用的時候,經常需要別人傳入乙個布林型別的引數。然而很多時候,使用介面人的不會老老實實地傳入乙個布林值,可能會用0代替false,用乙個object代替true。有時候使用者會根本不寫這個引數,這時候這個傳入的值是undefined(布林為false)。因此我們需要對這些值進行處理,轉化為布林值。
我們都知道"!"是取反符號,!true=false,!false=true。但是如果!後面不是乙個布林值的時候,"!"會先把這個值強制轉化為布林型別,然後再進行取反操作,舉個例子:
取反操作
「!」可以將乙個值對應布林值的取反。但是如果我們知道這個值對應的布林值呢?只需要在!號前再加乙個!,取反的取反就是原來的布林值,舉例如下:
取反的取反操作
vue.js原始碼在呼叫這個定義的def函式的時候,基本上只寫了前面三個引數,第四個引數沒有寫(預設為undefined),這是"!!"就可以自動地將undefined轉化為false,從而使得enumerable傳入的值為布林型別的值。
關於JavaScript的小技巧總結
獲取陣列的最後乙個元素 array.prototype.slice begin,end 用來獲取begin和end之間的陣列元素。如果你不設定end引數,將會將陣列的預設長度值當作end值。但有些同學可能不知道這個函式還可以接受負值作為引數。如果你設定乙個負值作為begin的值,那麼你可以獲取陣列的...
小猿圈分享6個 JavaScript 小技巧(下)
nee necountry us state new yourk 複製 6.物件 6.1 使用解構刪除不必要屬性 有時候你不希望保留某些物件屬性,也許是因為它們包含敏感資訊或僅僅是太大了 just too big 你可能會列舉整個物件然後刪除它們,但實際上只需要簡單的將這些無用屬性賦值給變數,然後把...
Mybatis中運用小技巧(二) like的使用
假設要找使用者姓名中即含 李 又含 香 的使用者,mysql中用like可以解決,語句為 select from user where u name like 李 and u name like 香 listselectillegibilitybyname listnames names是乙個由單個...