何為求值,就是執行之後的表示式。
我們最常見的就是
"j**ascript: void(0)
">
//這段**使點選這個a標籤什麼都不做
為什麼呢?
重點在於,不管表示式是什麼,它返回的始終都是乙個undefined。
順序也很重要,先計算表示式,然後再返回。
怎麼用?
1、在使用立即執行的函式表示式時,可以利用 void 運算子讓 j**ascript 引擎把乙個函式識別成函式表示式而不是函式宣告(語句)。
voidfunction
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...