Void運算子 與 undefined型別

2022-09-07 01:21:13 字數 1024 閱讀 2341

何為求值,就是執行之後的表示式。

我們最常見的就是

"

j**ascript: void(0)

">

//這段**使點選這個a標籤什麼都不做

為什麼呢?

重點在於,不管表示式是什麼,它返回的始終都是乙個undefined。

順序也很重要,先計算表示式,然後再返回。

怎麼用?

1、在使用立即執行的函式表示式時,可以利用 void 運算子讓 j**ascript 引擎把乙個函式識別成函式表示式而不是函式宣告(語句)。

void

function

iife() ;

var baz = function

() {};

var foo = function

() ;

var biz = function

() {};

foo();

biz();

}();

普通立即執行的函式表示式都這樣(function fn(){})(),這樣引擎就會解析為乙個表示式。

不使用()括起來的時候,引擎會將其解析為函式表示式,但是通過乙個void運算子就可以避免這個問題。因為void 運算子後面本來就是乙個表示式。

2、判斷時用作undefined的替身

之前a標籤的例子就是這樣使用的。

比如我們判斷乙個變數是不是undefined的時候

options === void 0

為什麼要使用void 0來替換,不直接使用undefined來作判斷?

1、因為undefined在全域性變數中是乙個屬性,本是唯讀屬性,但是在低版本ie的區域性作用域中是可以被重新被賦值的。因為這裡不安全所以使用void 來替換。

2、使用void來替換的時候,void後面必須要跟乙個表示式,其實任意表示式都是可以的。既然都能滿足,我們只是想得到乙個穩定的undefined,那為什麼不用最簡短的表示式呢,void 0就應運而生了。有些地方也寫作void(0);

NOT運算子與 運算子

6.4.2 not運算子與 運算子 對於簡單的條件查詢,not運算子與 運算子的功能幾乎沒有什麼區別,那麼not運算子的優勢體現在 呢?答案是它可以與其他運算子組合使用,這一點是 運算子所不能實現的。在6.4.1節已經介紹了not運算子與in運算子組合使用的例子,下面給出乙個not運算子與betwe...

C語言 運算子與 運算子

我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...

(運算子) 運算子

運算子既可作為一元運算子也可作為二元運算子。備註 unsafe context data guid 00bf87717d88a9fac1afadb796c675da 一元 運算子返回運算元的位址 要求 unsafe 上下文 bool data guid 9efd189df2cfb88799dca08...