Javascript判斷變數是否定義/賦值

來源:互聯網
上載者:User

使變數有意義:

1、定義變數即變數聲明,類似於:var str;

2、變數賦值即變數初始化,類似於str="test";

這2步我們可一步到位,即定義變數的同時給變數賦值,類似於:var str="test";

有定義但沒賦值的變數,會保持特殊的值:undefined(非字串) ,即 var str; str==undefined 返回true

對一個未定義過的變數即未聲明過的變數,只能執行一項操作,即使用typeof操作符檢測其資料類型(如: typeof str 或 typeof(str) ,注意:typeof是一操作符不是函數,其後的圓括弧非必須,完全可省略,另外typeof返回的是字串),執行其它操作都會報錯!

清楚上面的概念,js判斷變數是否有被賦值的方法就出來了:

方法1:

 代碼如下 複製代碼

var str;
if(str==undefined){
alert("該變數沒被賦過值")
}else{
alert("該變數被賦過值啦")
}

但該方法的前提是變數str必須是有定義過的,即進行過變數聲明,否則會報錯,報錯原因如上加粗文字所示!

方法2:

 代碼如下 複製代碼

if(typeof str =='undefined'){ //必須加引號,因typeof返回的是字串
alert("該變數沒被賦過值")
}else{
alert("該變數被賦過值啦")
}

或者這要樣寫

function check(bianliang){

if(typeof(bianliang)=='undefined'){

      alert("變數沒有定義哦");

}else{

      alert("變數定義了哦");

}

}

推薦使用方法2,來js判斷變數是否有被賦值!!


除了var命令,還可以有另一種改寫,也能得到正確的結果:

 代碼如下 複製代碼

if (!window.myObj) {

myObj = { };

}

window是javascript的頂層對象,所有的全域變數都是它的屬性。所以,判斷myobj是否為空白,等同於判斷window對象是否有myobj屬性,這樣就可以避免因為myObj沒有定義而出現ReferenceError錯誤。不過,從代碼的規範性考慮,最好還是對第二行加上var:

 代碼如下 複製代碼

if (!window.myObj) {

var myObj = { };

}

或者寫成這樣:

if (!window.myObj) {

window.myObj = { };

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.