1ãç´æ¥å¤æ对象ä¸ä¸ºnull
if (!myObj) {
var myObj = { };
}
Javascriptè¯è¨æ¯"å
解æï¼åè¿è¡"ï¼è§£ææ¶å°±å·²ç»å®æäºåé声æ
2ã使ç¨window对象å¤ææ对象æ¯å¦åå¨
if (!window.myObj) {
var myObj = { };
}
3ã使ç¨this对象å¤ææ对象æ¯å¦åå¨
if (!this.myObj) {
ãthis.myObj = { };
}
å¨æäºè¿è¡ç¯å¢ä¸ï¼æ¯å¦V8ãRhinoï¼ï¼windowæªå¿
æ¯é¡¶å±å¯¹è±¡ãæ以ï¼èèæ¹æthisè¿è¡å¤æï¼å¨
å
¨å±åéçå±é¢ä¸ï¼thiså
³é®åæ»æ¯æå顶å±åéï¼æ以就å¯ä»¥ç¬ç«äºä¸åçè¿è¡ç¯å¢ã
4ãæ¹æ³ä¸è¿æ ·åå¯è¯»æ§è¾å·®ï¼èä¸thisçæåæ¯å¯åçï¼å®¹æåºéï¼æ以è¿ä¸æ¥æ¹åï¼
var global = this;
ããif (!global.myObj) {
ããããglobal.myObj = { };
ãã}
5ãå¯ä»¥ä½¿ç¨typeof
è¿ç®ç¬¦ï¼å¤æmyObjæ¯å¦æå®ä¹ã
if (typeof myObj == "undefined") {
ããããvar myObj = { };
ãã}
è¿æ¯ç®å使ç¨æ广æ³çå¤æjavascript对象æ¯å¦åå¨çæ¹æ³ã
6ãç±äºå¨å·²å®ä¹ãä½æªèµå¼çæ
åµä¸ï¼myObjçå¼ç´æ¥çäºundefinedï¼æ以ä¸é¢çåæ³å¯ä»¥ç®åï¼
if (myObj == undefined) {
ãvar myObj = { };
}
æ两个å°æ¹éè¦æ³¨æï¼é¦å
第äºè¡çvarå
³é®åä¸è½å°ï¼å¦åä¼åºç°ReferenceErroré误ï¼å
¶æ¬¡undefinedä¸è½å åå¼å·æåå¼å·ï¼å 为æ¯è¾çæ¯undefinedè¿ç§
æ°æ®ç±»åï¼èä¸æ¯"undefined"è¿ä¸ª
å符串ã
7ãç¨ç²¾ç¡®æ¯è¾===å¤æ对象æ¯å¦åå¨
if (myObj === undefined) {
ããvar myObj = { };
}
8ãæ ¹æ®javascriptçè¯è¨è®¾è®¡ï¼undefined == nullï¼æ以æ¯è¾myObjæ¯å¦çäºnullï¼ä¹è½å¾å°æ£ç¡®ç»æ
if (myObj == null) {
ããvar myObj = { };
}
ä¸è¿ï¼è½ç¶è¿è¡ç»ææ£ç¡®ï¼ä½æ¯ä»è¯ä¹ä¸çï¼è¿ç§å¤ææ¹æ³æ¯éçï¼åºè¯¥é¿å
ã
å 为nullæçæ¯å·²ç»èµå¼ä¸ºnullç空对象ï¼å³è¿ä¸ªå¯¹è±¡å®é
ä¸æ¯æå¼çï¼èundefinedæçæ¯ä¸åå¨æ没æèµå¼ç对象ã
å æ¤ï¼è¿éåªè½ä½¿ç¨"æ¯è¾è¿ç®ç¬¦"ï¼==ï¼ï¼å¦æè¿é使ç¨"精确æ¯è¾è¿ç®ç¬¦"ï¼===ï¼ï¼å°±ä¼åºé
9ãè¿å¯ä»¥ä½¿ç¨inè¿ç®ç¬¦ï¼å¤æmyObjæ¯å¦ä¸ºé¡¶å±å¯¹è±¡çä¸ä¸ªå±æ§
if (!('myObj' in window)) {
ãããwindow.myObj = { };
}
10ã使ç¨hasOwnPropertyæ¹æ³ï¼å¤æmyObjæ¯å¦ä¸ºé¡¶å±å¯¹è±¡çä¸ä¸ªå±æ§
if (!this.hasOwnProperty('myObj')) {
ããthis.myObj = { };
}
æ»ç»ï¼
1ãå¦æåªå¤æ对象æ¯å¦åå¨ï¼æ¨è使ç¨ç¬¬äºç§åæ³ã
2ãå¦æé¤äºå¯¹è±¡æ¯å¦åå¨ï¼è¿è¦å¤æ对象æ¯å¦ænullå¼ï¼æ¨è使ç¨ç¬¬ä¸ç§åæ³ã
3ãé¤éç¹æ®æ
åµï¼ææåéé½åºè¯¥ä½¿ç¨varå½ä»¤å£°æã
4ã为äºè·¨å¹³å°ï¼å»ºè®®é¿å
使ç¨window表示顶å±å¯¹è±¡ã
5ãå¨Javascriptè¯è¨ä¸ï¼nullåundefined容æ产çæ··æ·ãå¨å¯è½åæ¶æ¶å两è
çæ
åµä¸ï¼å»ºè®®ä½¿ç¨"精确æ¯è¾"è¿ç®ç¬¦ï¼===ï¼ã