JavaScript check null

อาทิตย์ที่ผ่านมาเพื่อนผมในทีมได้รับ support case ว่า JavaScript API ที่ support อยู่ไม่รองรับค่า null ที่ server โผล่มา คือพอ server ส่ง null ลงมาเป็นค่าใน json แบบนี้

{"data":null}

แล้วที่ browser จะเจ๊งเลย แล้วโยน error TypeError: is null ทำนองนี้ขึ้นมา

พอลองตรวจสอบดูพบว่าปกติ server ถ้าข้อมูลมีค่ามันจะส่งลงมาเป็น object ซ้อนอีกทีแบบนี้

{"data":{"a":1,"h":"FFFFF"}}

พอลองดู code JavaScript ที่ใช้ดึงค่า จะ check ว่าเป็น object หรือไม่ ถ้าใช่ก็ดึงค่า propery a หรือ h ออกมาใช้งาน ทำนองนี้

function process_data(data){
	if(typeof data ==="object"){
		console.log('a='+a.a+',h='+a.h);
	}
}

code มันก็ดูเหมือนจะได้อ่ะนะ แต่พอ check typeof refference ดูก็พบว่า typeof จะ return ผลการตรวจค่า null ออกมาเป็น “object” เสมอ พอ server ส่ง null มาเลยไม่รอด ไป access key ที่ไม่มีจริงก็เลยเจ๊งกันไป ซึ่งผมเองก็เพิ่งรู้เหมือนกันว่า typeof มันใช้ตรวจค่า null ไม่ได้ เพราะปกติใช้แต่ if check เอา – -”

เลยลองดูง่ายๆ บน JavaScript Console (เซ็งตรงมันต้องเขียน line เดียวนี่แหละ)

var nn=null;
if(typeof nn==='object'){
	console.log('object');
}else{
	console.log('else');
} 
//print 'object'
if(nn){
	console.log('value');
}else{
	console.log('else');
} 
//print 'else'

ก็เลยได้รู้ว่า typeof มันใช้ check null ไม่ได้ (แต่ check undefined ได้นะ)

Categories: Code, Diary, Tech | Tags: , , | 3 Comments

Post navigation

3 thoughts on “JavaScript check null

  1. มันจะมีทำไมทั้ง null ทั้ง undefined (╯°□°)╯︵ ┻━┻

  2. ผมไม่เคยใช้ typeof เลยมั้ง😛

    มีเหตุผลอยู่ในนี้อะ https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof เห็นว่าพยายามจะเปลี่ยนด้วยแต่ว่าลองเปลี่ยนใน V8 แล้ว code เก่าเจ๊งเลยโดน reject เบย😛

  3. คอนโซลขึ้นบรรทัดใหม่ด้วย shift+enter ได้นะครับ หรือจะเขียนหลายๆ บรรทัดข้างนอกแล้วก๊อบมาวางก็ได้ครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

Bomreview

โบ้มรีวิว โตแล้วจะรีวิวอะไรก็ได้

rerng.rak

Just another WordPress.com weblog

neizod

Smile! You’re at the best WordPress.com site ever

Admod's blog

just logs

freeclub

พยายามเขียนให้ยาวกว่าเฮดเดอร์ข้างบนจะได้ดูสวยๆ

Anontawong's Musings

a daily dose of a new perspective

TravelKanuman

Travel around the world

kemisara

Belle Kemisara Paladesh's Fan Site - เว็บไซต์แฟนคลับเบลล์ เขมิศรา พลเดช

eatandysummers

eat. travel. live.

Jonathan Fleming's Blog

A Photography Blog

Viewfinder - Street Photography Blog

Jimmy Yang Street Photography Blog

PinkiiGirl

Be one of those who change things and push the human race forward

บล็อกอะไรไม่รู้ของแบม

Ordinary guy blogging about comic books, video games, movies and stuffs.

Pawoot Personal Blog & Think Tank

E-Business Man Daily Life and What I'm Thinking

Mahalarp

journeys & musics never ended ...

Tyson Robichaud Photo-blography

Tips, tricks, reviews and general rambling.

%d bloggers like this: