JavaScript變數聲明提前

來源:互聯網
上載者:User

標籤:

題目如下:請寫出下面代碼2次alert分別輸出什麼結果?

<script type="text/javascript">var a = 1; var a;alert(typeof a); (function () { b = ‘hello world‘; var b; })(); alert( typeof b); </script>

我的答案是:1.undefined 2.undefined。然後leader讓我們再仔細考慮一下問題答案。我對題目的分析:1.聲明a並賦值為1,然後用重新聲明a,但是此時沒有賦值,那變數聲明了,但是未賦值,所以是undefined。2.第一行的b變數是在函數裡面是全域變數,然後聲明了一個局部變數,但是沒有賦值。alert裡面輸出的是全域變數b,所以也是undefiend。


我自己在Chrome裡面運行了一下代碼,代碼正確結果是1.number 2.undefined。這裡考察的是JavaScript的變數聲明提前概念。 

test();function test(){     alert("Hello World!"); }

運行結果是:Hello World!。原理:電腦在開始執行語句之前,會先尋找所有的function定義,然後儲存相關的function。

分析結果:

第1題:var a = 1; var a;

第2行聲明變數a,就相當於在頂部聲明了a,然後第一句是重新聲明a,然後賦值為1。所以typeof a為number

第2題:b = ‘hello world‘; var b;


第二題解析:b=‘hello world‘,程式首先會在函數內部去尋找是否有變數b的聲明,如果有的話,直接賦值為‘hello world‘。但是alert( typeof b); 是在函數外面,輸出的全域變數b,所有是undefined。



接著看如下程式碼片段:

 

<script type="text/javascript">    name = "aaa";    function test() {        alert(typeof name);        var name = "bbb";        alert(typeof name);    }    test();</script>

請寫出結果。

分析可以寫成如下程式碼片段:

myname = "aaa";function test() {        alert(typeof myname); //在函數內部尋找是否有myname的聲明,有聲明,但未賦值。所以typeof myname為undefined  var myname=123;//賦值操作   alert(typeof myname);//number} test();

 

但是下面程式碼片段,運行結果是什嗎?

<script type="text/javascript">    alert(typeof name);    var name = "hello world";    alert(typeof name);</script>

 


程式運行結果是:string,string。原因是什麼?

 

注意:通過和園友的共同討論,有了結果了。關於最後出現string和string的結果,確實是因為Chrome瀏覽器預設給name賦值了name="",所以輸出的結果為string。這裡給大家提醒了一下,在前端開發過程中,我們很多時候都在關注CSS和HTML的在各個瀏覽器中的相容器,但是有時JavaScript在各個瀏覽器中也有相容性問題。

轉載自:liminjun88(包含連結http://www.cnblogs.com/liminjun88/)

JavaScript變數聲明提前

聯繫我們

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