js判斷變數與對象是否定義(undefined)轉換函式

來源:互聯網
上載者:User

在處理html5的頁面取值的時候,發現當取不到的時候報錯,js程式不再執行,直接寫個修正函數處理
如下:

 代碼如下 複製代碼
//修正未定義的變數
function checkUnfined(value){
 if(typeof(value)=='undefined'){
 return ""; 
 }
 return value; 
}

話說判斷是否未定義也是很常用的東東

看下面簡單例子
 

 代碼如下 複製代碼
if(typeof(VAL1) == 'undefined') {
   var VAL1 = "now defined";
}else {
   alert("already defined");
}
 
alert("VAL1=" + VAL1);

 
 
通過判斷typeof(VAL1) == 'undefin'可以知道某變數是否定義。順便提一下,javascript裡面沒有block的概念,所以儘管VAL1是在if語句種定義的,在外面仍然可以訪問。
但是注意如果某個var是在函數內定義的,那麼該變數則是該函數的局部變數。
 
再看下面的例子
 

 代碼如下 複製代碼
if(typeof(FUN1) == 'undefined') {
   alert("now define the FUN1");
   function FUN1() {
        alert("this is FUN1");
   }
}else {
   alert("already defined");
}

 
你覺得輸出應該是什嗎?
 
 
正確答案應該是alert("already defined");。
函數和變數不同,對於funtion 這個關鍵字,javascript是在編譯期間就搞定了,所以執行時認為該函數已經定義。
這樣對於函數判斷是否定義可以更具體的用
if(typeof(FUNC1) == 'function')
來檢查一個函數是否聲明。對於作外掛程式的程式可能會有用。


全域對象,可以用window.變數名方式判斷:

 代碼如下 複製代碼

if(window.MyObject == null) {
window.MyObject = {};
}
//或者
if(!("MyObject" in window)) {
window.MyObject = {};


不建議使用if(!MyObject)或者if(!window.MyObject)方式判斷對象是否存在,因為當MyObject=false或者MyObject=""時,該條件判斷也是成立的。

附上判斷對象未定義的方法:

 代碼如下 複製代碼

var a;
alert(a == undefined);//第一種
alert(typeof a == "undefined");//第二種
alert(a === undefined);//與第一種類似

//如果是判斷一個對象的某個屬性是否存在,可以用以下方法:
var obj = {};
alert(obj.hasOwnProperty('a'));
alert('a' in obj);

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.