IIf 函數(shù)的陷阱
熱度 1已有 2391 次閱讀2015-5-20 08:49
|個(gè)人分類:Access
IIf 函數(shù)有3個(gè)參數(shù),可以是3個(gè)表達(dá)式,第1個(gè)表達(dá)式的值為真時(shí)返回第2個(gè)表達(dá)式的值,為假則返回第3個(gè)表達(dá)式的值。
雖然只是返回1個(gè)值,但I(xiàn)If卻要把所有表達(dá)式都計(jì)算一遍。按理說(shuō)第1個(gè)表達(dá)式為真時(shí),只計(jì)算第2個(gè)表達(dá)式的值即可,但卻多余地把第3個(gè)表達(dá)式也計(jì)算了。因?yàn)檫@個(gè)原因,使得IIf函數(shù)的效率比較低,更嚴(yán)重的是還造就了一個(gè)陷阱。
請(qǐng)看下面的代碼:
y = IIf(x = 0, 0, 1 / x)
為了避免除0錯(cuò)誤,在IIf的第1個(gè)參數(shù)中判斷當(dāng)x=0時(shí),直接返回0。但當(dāng)x真的等于0時(shí),結(jié)果還是會(huì)出現(xiàn)除0錯(cuò)誤,因?yàn)镮If把第3個(gè)表達(dá)式也計(jì)算了!