1. 程式人生 > >js中viod運算子總結

js中viod運算子總結

目錄

寫在前面

常用語法

官方定義

常見用法

簡單介紹


寫在前面

簡單來說,void運算子用於對給定的表示式進行求值,然後返回 undefined該運算子通常用於避免輸出不應該輸出的值。

常用語法

    void expression

官方定義

這個運算子能向期望一個表示式的值是undefined的地方插入會產生副作用的表示式。

void 運算子通常只用於獲取 undefined的原始值,一般使用void(0)(等同於void 0)。在上述情況中,也可以使用全域性變數undefined 來代替(假定其仍是預設值)。

常見用法

通過採用void 0undefined比直接寫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為偶數")