JavaScript 中對變數和函式宣告的提前樣本,javascript樣本

來源:互聯網
上載者:User

JavaScript 中對變數和函式宣告的提前樣本,javascript樣本
如題所示,看下面的樣本
(可以使用Chrome瀏覽器,然後F12/或者右鍵,審查元素.調出開發人員工具,進入控制台console輸入)
(提示: 控制台輸入時Shift+Enter可以中途代碼換行)

var name = "xiaoming"; (function(){   var name = name || "小張";  console.info(name);})();// 小張(function(){  name = name || "小張";  console.info(name);})(); // xiaoming(function(){  var name2= name;  var name = name || "小張";  console.info(name, name2);})(); // 小張 undefined 

執行時的如下所示:



解釋如下: 
在JavaScript中,
function xxx(){  // 一堆代碼...  // ...  var name2 = name;  var name = name || "小張";  // 一堆代碼}

執行時會變成這種等價形式:
function xxx(){  var name2 = undefined;  var name = undefined;  // 其他 var 也會被提前到最起始處  // 一堆代碼...  // ...  name2 = name;  name = name || "小張";  // 一堆代碼}

你還可以參考 Bootstrap中文網的教程 JavaScript 中對變數和函式宣告的提前(hoist)

日期: 2014-11-07

作者: 鐵錨(http://blog.csdn.net/renfufei)



急,問javascript變數聲明的問題?

第一:

<script language="javascript">
var kk="123";
ss="789";
document.write (kk+'<br>'+ss);
</script>

本來聲明變數是這樣寫的var kk="123",ss="789";
現在我把ss寫到下一行,那麼這個時候ss算不算是已經用var聲明過的變數?

*****************************************************
答:
var kk="123";//請檢查你這裡是不是寫錯成了“;(分號)”,正確的是逗號(,);
正確的定義方法:
var kk="123",//注意這裡要用逗號
ss="789",
aa="11",
bb="22",
cc="33",
//可以定義無限個變數
xx="77",
yy="88",
zz="99";//到了最後一個才用分號,而且是必須用分號;

第二:

<script language="javascript">
var kk="123";
kk="789";
document.write (kk+'<br>'+ss);
</script>

本來我是這樣寫的var kk="123",kk="789";
現在我把kk="789"換到了下一行,那麼這個時候kk是不是同一個變數又用var重新聲明了一次?
*****************************************************
答:
首先,這裡定義的kk的值跟你想的一樣:是 789,另外這裡同樣出現了上面“第一”裡面的語法錯誤。

第三:
<script language="javascript">
var
kk="123";
ss="789";
document.write (kk+'<br>'+ss);
</script>
如果我把var單獨寫一行,這樣kk和ss能不能算是聲明過了?
*****************************************************
答:
不錯,完全和你的想法一樣,這裡同時聲明了kk和ss連個變數;
()...餘下全文>>
 
javascript中的函式宣告

第一個標準的函式宣告
第二個和第一個差不多,只不過做成匿名函數賦值變數,從語義上來講不同但效果最後一樣,都會在當前上下文產生一個func2的變數名
第三個我很少這樣用,但是應該也可以的,實際上等於var func3,func4; func3 = func4 = function(){}
第四個是使用Function建構函式,這個建構函式使用字串構建函數,動態,比如你可以用字串拼接一個函數體出來,如new Function("alert var" + varName + " + var" + varName2)這樣,這種東西在需要高效能執行javascript的時候,來進行先行編譯。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.