2018-06-13 jsのタイプとその値の対ブル値の変換

1846 ワード

var st={name:"bob",age:11,addr:"",email:null,country:[],points:[11,12,45,21],goal:[{os:"ios",cap:21}]}

mongos> if(st.goal && st.goal[0])print("ok");else print("no")
ok
mongos> if(st.country && st.country[0])print("ok");else print("no")
no

mongos> if(st.country)print("ok");else print("no")
ok
mongos> if(st.goal[0])print("ok");else print("no")
ok

mongos> if(st.name)print("ok");else print("no")
ok
mongos> if(st.addr)print("ok");else print("no")
no

mongos> if(st.email)print("ok");else print("no")
no
mongos> if(st.email1)print("ok");else print("no")
no

mongos> if(st.email1.name)print("ok");else print("no")
2018-06-13T15:55:47.447+0800 E QUERY    [thread1] TypeError: st.email1 is undefined :
@(shell):1:1

//            ,&&                        
mongos> if(st.members)print("ok");else print("no")
ok
mongos> if(st.membersa)print("ok");else print("no")
no
mongos> if(st.members && st.members.sta)print("ok");else print("no")
no
mongos> if(st.membersa && st.membersa.sta)print("ok");else print("no")
no


mongos> if(st.members.length)print("ok");else print("no")
no
mongos> if(st.country.length)print("ok");else print("no")
no
対象が存在しています.存在しない属性にアクセスするとエラーが発生しません.undefinedを得て属性にアクセスし続けるか、[0]という角標を使うとエラーが発生します.undefinedはこの操作をサポートしていません.したがって、st.goal && st.goal[coutry]という構文を使って、エラーを避けることができます.st.goalが存在しないなら終了します.st.goal=「」論理はfalseに戻ります.値が[]または{}であれば、trueに戻り、country属性に引き続きアクセスしても、エラーは発生しません.一番多くはundefinedですので、下の関数でデフォルトでundefinedを処理すればいいです.