1樓:然後去遠足
在 js 執行層面裡本身無法判斷。
只能判斷乙個變數的值是否為 undefined;但這跟變數存不存在無關,完全可以宣告乙個變數並賦值為 undefined(或不賦值,初值即為 undefined)。
2樓:西安天融信教育
看是不是undefined,如果是true就是不存在
js判斷乙個變數或物件是否存在
3樓:匿名使用者
//判斷變數i是否存在
typeof(i)=="undefined": 未定義//原始js判斷乙個id為div的元素是否存在if(document.getelementbyid("div))//jquery判斷乙個元素是否存在
js中怎麼判定乙個變數是否定義
4樓:個人的一樣
判斷變數是否初始化 var a; if(a)else 確定當 a = false,判斷是錯誤的 判斷變數是否定義: if(b)else 確定當 b = false,判斷是錯誤的 一般都是這麼判斷的
5樓:
錯誤的方法,正確的是:
if(typeof(變數名)=="undefined")
具體的看這裡:網頁鏈結
js判斷物件是否存在的十種方法
6樓:四捨**入
可以參考下面的兩種方法:
1、直接判斷物件不為null
if (!myobj) ;
}javascript語言是"先解析,後執行",解析時就已經完成了變數宣告
2、使用window物件判斷某物件是否存在if (!window.myobj) ;}
7樓:青鳥中關村專家
1、直接判斷物件不為null
if (!myobj) ;
}javascript語言是"先解析,後執行",解析時就已經完成了變數宣告
2、使用window物件判斷某物件是否存在
if (!window.myobj) ;
}3、使用this物件判斷某物件是否存在
if (!this.myobj) ;
}在某些執行環境中(比如v8、rhino),window未必是頂層物件。所以,考慮改成this進行判斷,在全域性變數的層面中,this關鍵字總是指向頂層變數,所以就可以獨立於不同的執行環境。
4、方法三這樣寫可讀性較差,而且this的指向是可變的,容易出錯,所以進一步改寫:
var global = this;
if (!global.myobj) ;
}5、可以使用typeof運算子,判斷myobj是否有定義。
if (typeof myobj == "undefined") ;
}這是目前使用最廣泛的判斷javascript物件是否存在的方法。
6、由於在已定義、但未賦值的情況下,myobj的值直接等於undefined,所以上面的寫法可以簡化:
if (myobj == undefined) ;
}有兩個地方需要注意,首先第二行的var關鍵字不能少,否則會出現referenceerror錯誤,其次undefined不能加單引號或雙引號,因為比較的是undefined這種資料型別,而不是"undefined"這個字串。
7、用精確比較===判斷物件是否存在
if (myobj === undefined) ;
}8、根據javascript的語言設計,undefined == null,所以比較myobj是否等於null,也能得到正確結果
if (myobj == null) ;
}不過,雖然執行結果正確,但是從語義上看,這種判斷方法是錯的,應該避免。
因為null指的是已經賦值為null的空物件,即這個物件實際上是有值的,而undefined指的是不存在或沒有賦值的物件。
因此,這裡只能使用"比較運算子"(==),如果這裡使用"精確比較運算子"(===),就會出錯
9、還可以使用in運算子,判斷myobj是否為頂層物件的乙個屬性
if (!('myobj' in window)) ;
}10、使用hasownproperty方法,判斷myobj是否為頂層物件的乙個屬性
if (!this.hasownproperty('myobj')) ;
}總結:
1、如果只判斷物件是否存在,推薦使用第五種寫法。
2、如果除了物件是否存在,還要判斷物件是否有null值,推薦使用第一種寫法。
3、除非特殊情況,所有變數都應該使用var命令宣告。
4、為了跨平台,建議避免使用window表示頂層物件。
5、在javascript語言中,null和undefined容易產生混淆。在可能同時涉及兩者的情況下,建議使用"精確比較"運算子(===)。
8樓:風流小子愛美人
本篇文章主要是對js判斷物件是否存在的10種方法進行了總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
javascript語言的設計不夠嚴謹,很多地方一不小心就會出錯。
舉例來說,請考慮以下情況。
現在,我們要判斷乙個全域性物件myobj是否存在,如果不存在,就對它進行宣告。用自然語言描述的演算法如下:
**如下:
if (myobj不存在)
你可能會覺得,寫出這段**很容易。但是實際上,它涉及的語法問題,遠比我們想象的複雜。juriy zaytsev指出,判斷乙個javascript物件是否存在,有超過50種寫法。
只有對javascript語言的實現細節非常清楚,才可能分得清它們的區別。
第一種寫法
根據直覺,你可能覺得可以這樣寫:
**如下:
if (!myobj) ;
}但是,執行這段**,瀏覽器會直接丟擲referenceerror錯誤,導致執行中斷。請問錯在**?
對了,if語句判斷myobj是否為空時,這個變數還不存在,所以才會報錯。改成下面這樣,就能正確執行了。
**如下:
if (!myobj) ;
}為什麼加了乙個var以後,就不報錯了?難道這種情況下,if語句做判斷時,myobj就已經存在了嗎?
要回答這個問題,就必須知道javascript直譯器的工作方式。javascript語言是"先解析,後執行",解析時就已經完成了變數宣告,所以上面的**實際等同於:
**如下:
var myobj;
if (!myobj) ;
}因此,if語句做判斷時,myobj確實已經存在了,所以就不報錯了。這就是var命令的"**提公升"(hoisting)作用。javascript直譯器,只"提公升"var命令定義的變數,對不使用var命令、直接賦值的變數不起作用,這就是為什麼不加var會報錯的原因。
第二種寫法
除了var命令,還可以有另一種改寫,也能得到正確的結果:
**如下:
if (!window.myobj) ;
}window是javascript的頂層物件,所有的全域性變數都是它的屬性。所以,判斷myobj是否為空,等同於判斷window物件是否有myobj屬性,這樣就可以避免因為myobj沒有定義而出現referenceerror錯誤。不過,從**的規範性考慮,最好還是對第二行加上var:
**如下:
if (!window.myobj) ;}
9樓:靳大大來了
js判斷物件是否存
在的十種方法
js指令碼中判斷物件是否存在的十種方法,有了本文提供的這些判斷物件是否存在的方法,以後在js指令碼中做物件檢測,應該沒什麼問題了。
本節內容:
js判斷物件是否存在的10種方法。
判斷乙個全域性物件myobj是否存在,如果不存在,就對它進行宣告。
用自然語言描述的演算法如下:
if (myobj不存在)
juriy zaytsev指出,判斷乙個javascript物件是否存在,有超過50種寫法。
只有對javascript語言的實現細節非常清楚,才可能分得清它們的區別。
第一種寫法
根據直覺,你可能覺得可以這樣寫:
複製** **示例:
if (!myobj) ;
}但是,執行這段**,瀏覽器會直接丟擲referenceerror錯誤,導致執行中斷。請問錯在**?
對了,if語句判斷myobj是否為空時,這個變數還不存在,所以才會報錯。改成下面這樣,就能正確執行了。
複製** **示例:
if (!myobj) ;
}為什麼加了乙個var以後,就不報錯了?
難道這種情況下,if語句做判斷時,myobj就已經存在了嗎?
要回答這個問題,就必須知道javascript直譯器的工作方式。javascript語言是"先解析,後執行",解析時就已經完成了變數宣告,所以上面的**實際等同於:
複製** **示例:
var myobj;
if (!myobj) ;
}因此,if語句做判斷時,myobj確實已經存在了,所以就不報錯了。這就是var命令的"**提公升"(hoisting)作用。javascript直譯器,只"提公升"var命令定義的變數,對不使用var命令、直接賦值的變數不起作用,這就是為什麼不加var會報錯的原因。
第二種寫法
複製** **示例:
除了var命令,還可以有另一種改寫,也能得到正確的結果:
if (!window.myobj) ;
}window是javascript的頂層物件,所有的全域性變數都是它的屬性。所以,判斷myobj是否為空,等同於判斷window物件是否有myobj屬性,這樣就可以避免因為myobj沒有定義而出現referenceerror錯誤。不過,從**的規範性考慮,最好還是對第二行加上var:
複製** **示例:
if (!window.myobj) ;
} 或寫成這樣:
複製** **示例:
if (!window.myobj) ;
}第三種寫法
上面這種寫法的缺點在於,在某些執行環境中(比如v8、rhino),window未必是頂層物件。所以,考慮改寫成:
複製** **示例:
if (!this.myobj) ;
}在全域性變數的層面中,this關鍵字總是指向頂層變數,所以就可以獨立於不同的執行環境。
第四種寫法
但是,上面這樣寫可讀性較差,而且this的指向是可變的,容易出錯,所以進一步改寫:
複製** **示例:
var global = this;
if (!global.myobj) ;
}用自定義變數global表示頂層物件,就清楚多了。
第五種寫法
還可以使用typeof運算子,判斷myobj是否有定義。
複製** **示例:
if (typeof myobj == "undefined") ;
}這是目前使用最廣泛的判斷javascript物件是否存在的方法。
第六種寫法
由於在已定義、但未賦值的情況下,myobj的值直接等於undefined,所以上面的寫法可以簡化:
複製** **示例:
if (myobj == undefined) ;
}有兩個地方需要注意,首先第二行的var關鍵字不能少,否則會出現referenceerror錯誤,其次undefined不能加單引號或雙引號,因為比較的是undefined這種資料型別,而不是"undefined"這個字串。
第七種寫法
上面的寫法在"精確比較"(===)的情況下,依然成立:
複製** **示例:
if (myobj === undefined) ;
}第八種寫法
根據javascript的語言設計,undefined == null,所以比較myobj是否等於null,也能得到正確結果:
複製** **示例:
if (myobj == null) ;
}不過,雖然執行結果正確,但是從語義上看,這種判斷方法是錯的,應該避免。
因為null指的是已經賦值為null的空物件,即這個物件實際上是有值的,而undefined指的是不存在或沒有賦值的物件。
因此,這裡只能使用"比較運算子"(==),如果這裡使用"精確比較運算子"(===),就會出錯。
第九種寫法
還可以使用in運算子,判斷myobj是否為頂層物件的乙個屬性:
複製** **示例:
if (!('myobj' in window)) ;
}第十種寫法
最後,使用hasownproperty方法,判斷myobj是否為頂層物件的乙個屬性:
複製** **示例:
if (!this.hasownproperty('myobj')) ;
}總結:
1,如果只判斷物件是否存在,推薦使用第五種寫法。
2,如果除了物件是否存在,還要判斷物件是否有null值,推薦使用第一種寫法。
3,除非特殊情況,所有變數都應該使用var命令宣告。
4,為了跨平台,建議避免使用window表示頂層物件。
5,在javascript語言中,null和undefined容易產生混淆。在可能同時涉及兩者的情況下,建議使用"精確比較"運算子(===)。
js 物件的屬性名是變數怎麼處理
var obj var key testkey console.log obj key 使用方括號訪問 目標 js的屬性名可以使用變數 舉例 js物件object,當賦給該物件屬性的時候可以採用以下方式 如下 var object object.prop1 value1 object.prop2 v...
到底該怎麼判斷呢?要怎麼判斷?
根據你的描述,他不屬於硬漢,硬漢是敢做敢為 至死不渝。他應該是即內向又固執的型別。要多溝通,千萬不要試探。聽我的不會錯的,是我的親身經歷,我不會騙人的。哎!愛乙個人不容易,要好好珍惜喔!這個問題很麻煩,現在的問題不在於你或者他,多在於你們之間熟悉程度,次數多了,基本上都熟悉了,方方面面,交流 愛好 ...
在C語言中,怎麼判斷變數是int型的還是char型的
變數是int型的還是char型,是由宣告決定的。函式呼叫時引數型別錯,你編譯時就通不過呀。unsigned char 可以當無符號整型用。假設函式形式為 int function int n 方法1 判斷實參字長 int function int n 在c語言裡有個函式可以判斷輸入的是不是數字或者字...