JavaScript變數 沒有塊範圍
區域性變數覆蓋全域性變數,如下:
<script> //定義全域性變數test var test = "全域性變數"; //定義函式checkscope function checkscope() { //定義區域性變數 // var test = "區域性變數"; //輸出區域性變數 document.writeln(test+"<br/>"); alert(test); //var test="nihao"; } checkscope(); </script>
JavaScript變數沒有塊範圍,只要在方法中定義,無論是在switch塊中還是if塊中,他們的作用範圍都是整個函式。例如下面程式碼:
<script>
function test(o) //javascript是值傳遞的
{
//定義變數i,變數i的作用範圍是整個函式
var i = 0;
if (typeof o == "object")
{
//定義變數j,變數j的作用範圍是整個函式內,而不是if塊內。
var j = 5;
for(var k = 0; k < 10; k++)
{
//因為JavaScript沒有程式碼塊範圍
//所以k的作用範圍是整個函式內,而不是迴圈體內
document.write(k);
}
}
//即使出了迴圈體,k的值依然存在
alert(k + "\n" + j);
}
test(document);
</script>
<script> //定義全域性變數 var scope = "全域性變數"; function test() { //因此全域性變數被區域性變數覆蓋 //而此時scope區域性變數尚未賦值,故此處輸出undefined document.writeln(scope + "<br />"); //定義scope的區域性變數,其作用範圍為整個函式內 var scope = "區域性變數"; //再次輸出scope的值。 document.writeln(scope + "<br />"); } test(); </script>
變數範圍對於執行html事件處理一樣有效,如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> 事件處理中的區域性變數和全域性變數 </title>
<meta name="author" content="Yeeku.H.Lee" />
<meta name="website" content="http://www.leegang.org" />
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<script type="text/javascript">
//定義全域性變數
var x = "全域性變數";
</script>
</head>
<body>
<!-- 在onclick事件中重新定義了x區域性變數變數 -->
<input type="button" value="區域性變數"
onclick="var x = '區域性變數'; alert('輸出x區域性變數的值:' + x);" />
<!-- 直接輸出全域性變數x的值 -->
<input type="button" value="全域性變數 "
onclick="alert('輸出x全域性變數的值: ' + x);" />
</body>
</html>
函式(其實也是個類,此函式是唯一的構造器。使用new關鍵字建立)的
區域性變數;沒有字首的變數或var字首的變數,內部使用
例項變數:this.變數名,通過物件名訪問
靜態變數:函式名(類名).變數名,通過函式名訪問
<script>
//定義函式Person
function Person(national, age)
{
//this修飾的屬性為例項屬性
this.age = age;
//Person修飾的屬性為靜態屬性
Person.national =national;
//以var定義的變數為區域性變數
var bb = 0;
}
//建立Person的第一個物件p1。國籍為中國,年紀為29
var p1 = new Person('中國' , 29);
document.writeln("建立第一個Person物件<br />");
//輸出第一個物件p1的年紀和國籍
document.writeln("p1的age屬性為" + p1.age + "<br />");
document.writeln("p1的national屬性為" + p1.national + "<br />");
document.writeln("通過Person訪問靜態national屬性為"
+ Person.national + "<br />");
//輸出bb屬性
document.writeln("p1的bb屬性為" + p1.bb + "<br /><hr />");
//建立Person的第二個物件p2
var p2 = new Person('美國' , 32);
document.writeln("建立兩個Person物件之後<br />");
//再次輸出p1的年紀和國籍
document.writeln("p1的age屬性為" + p1.age + "<br />");
document.writeln("p1的national屬性為" + p1.national + "<br />");
//輸出p2的年紀和國籍
document.writeln("p2的age屬性為" + p2.age + "<br>");
document.writeln("p2的national屬性為" + p2.national + "<br />");
//通過類名訪問靜態屬性名
document.writeln("通過Person訪問靜態national屬性為"
+ Person.national + "<br />");
</script>
還可以隨時為物件增加方法和屬性
<script> function Student(grade , subject) { //d定義一個grade例項屬性, //將grade形參的值賦值給該例項屬性。 this.grade = grade; //定義一個subject靜態屬性, //將subject形參的值賦值給該靜態屬性。 Student.subject = subject; } s1 = new Student(5, 'Java'); with(document) { writeln('s1的grade屬性:' + s1.grade + "<br />"); writeln('s1的subject屬性:' + s1.subject + "<br />"); writeln('Student的subject屬性:' + Student.subject + "<br />"); } //為s1物件的subject屬性賦值,即為它增加一個subject屬性 s1.subject = 'Ruby'; with(document) { writeln('<hr />為s1的subject屬性賦值後<br />'); writeln('s1的subject屬性:' + s1.subject + "<br />"); writeln('Student的subject屬性:' + Student.subject + "<br />"); } </script>
相關文章
- 基礎 變數的作用範圍變數
- JavaScript 拖拽限定範圍JavaScript
- [20221130]PLSQL的變數作用範圍(linux).txtSQL變數Linux
- 隨機範圍小數和隨機範圍整數隨機
- C C++變數型別大小和範圍C++變數型別
- JavaScript 限定範圍拖動效果JavaScript
- JavaScript 限定範圍的拖拽效果JavaScript
- C++ vector 元素數量變化不能使用範圍 forC++
- Linux UID是什麼?其數值範圍有哪些?LinuxUI
- 不可變陣列的範圍求和陣列
- JavaScript基礎 —— DOM:遍歷 與 範圍JavaScript
- finally語句塊的有限範圍(skycto JEEditor)
- 打家劫舍+數字範圍按位與
- JavaScript變數JavaScript變數
- 在指定範圍內生成隨機數隨機
- 生成某個範圍的隨機數隨機
- 如何避免“範圍蠕變”讓專案脫軌?
- ChatGPT的使用範圍到底有多廣?ChatGPT
- 使用gis計算水庫庫容和淹沒範圍
- 如何產生指定範圍的隨機數隨機
- 匹配指定範圍整數正規表示式
- JavaScript 宣告變數JavaScript變數
- JavaScript變數提升JavaScript變數
- javascript 變數物件JavaScript變數物件
- 短效動態代理ip的使用範圍有哪些
- Linux主要應用範圍有哪些?Linux學習Linux
- 範圍分割槽
- 軟考——範圍
- jQuery Validate限定輸入數字大小的範圍jQuery
- Python限制輸入數字的範圍常用方法!Python
- JavaScript之變數物件JavaScript變數物件
- SciPy 應用範圍
- 前端JavaScript的前景如何?有沒有未來?前端JavaScript
- 數字化有沒有把你的企業變成「傳統企業」?
- JavaScript 3/30: CSS變數JavaScriptCSS變數
- JavaScript - 變數、值、型別JavaScript變數型別
- JavaScript基礎(二)變數JavaScript變數
- 關於JavaScript變數提升JavaScript變數
- Javascript 變數生命週期JavaScript變數