js中viod運算子總結
阿新 • • 發佈:2018-12-23
目錄
寫在前面
簡單來說,void運算子用於對給定的表示式進行求值,然後返回
undefined。
該運算子通常用於避免輸出不應該輸出的值。
常用語法
void expression
官方定義
這個運算子能向期望一個表示式的值是undefined
的地方插入會產生副作用的表示式。
void 運算子通常只用於獲取 undefined
的原始值,一般使用void(0)
(等同於void 0
)。在上述情況中,也可以使用全域性變數undefined
來代替(假定其仍是預設值)。
常見用法
通過採用void 0
取undefined
比直接寫undefined
更靠譜更安全,應該優先採用void 0
這種方式;
填充<a>
的href
確保點選時不會產生頁面跳轉;填充<image>
的src
,確保不會向伺服器發出垃圾請求;
簡單介紹
在ES5之前,window
下的undefined
是可以被重寫的,於是導致了某些極端情況下使用undefined會出現一定的差錯。所以,用void 0
是為了防止undefined
被重寫而出現判斷不準確的情況。 ES5之後的標準中,規定了全域性變數下的undefined
值為只讀,不可改寫的,但是區域性變數中依然可以對之進行改寫。
非嚴格模式下,undefined是可以重寫的,嚴格模式則不能重寫。
除了防止被重寫外,還可以減少位元組。void 0代替undefined省3個位元組。類似的還有很多常用的寫法,下面介紹一些老司機的套路,嘿嘿。
// 取整 parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //After a|0; //After // 四捨五入 Math.round(a); //Before a+.5|0; //After // 內建值 undefined; //Before void 0; //After, 快 0[0]; //After, 略慢 // 內建值 Infinity; 1/0; // 布林值短寫法 true; //Before !0; //After // 布林值短寫法 false; //Before !1; //After // 判斷奇偶數(裝逼寫法) if(n&1){ console.log("n為奇數") }else console.log("n為偶數")