2012-12-06 123 views
0

我不明白var a = [], i在這裏。 a怎麼可以聲明爲一個數組,無論我的類型是什麼?Var聲明在Javascript

// Source: Javascript: The Good Parts, p. 63 
    Array.dim = function (dimension, initial) { 
     var a = [], i; 
     for(i = 0; i< dimension; i +=1) 
     { 
      a[i] = initial; 
     } 
     return a; 
    } 

回答

3

這意味着宣告二者(單獨) - 不聲明它們等於

同樣的事情:

var a = []; 
var i; 
+0

是「我」,它也是一個變種。 Trebuchet提到,它就像有兩行'var xx'聲明。 – nembleton

+0

是的,'我'是一個變種。正如這個答案清楚地表明的那樣:上面的代碼和在不同的行上聲明兩個變量是一樣的。逗號分隔變量聲明。 – jahroy

+0

謝謝。 trebuchet的符號被認爲更好? –

1

的Javascript變量沒有類型。

a初始化爲的數組; i根本沒有初始化。

沒有什麼阻止你以後寫

a = 42; 
i = ["Hi", "there!"]; 
2

下面的代碼:

var a = [], i; 

EXACTLY與此相同的代碼:

var a = []; 
var i; 

這意味着:

  1. a爲空數組
  2. i是一個未初始化的變種
0

var a = [], i字面意思定義爲一個數組和定義I爲變量。沒有什麼是真正分配給我的。

例如:

這基本上可以讓你定義3個變量,而不必用這個詞VAR 3倍。速記JavaScript。

在使用它們之前定義變量可防止錯誤,如果該變量不存在,使功能更可靠。例如,如果不定義x作爲一個變量會導致:

if(x) { /* native code */ } 

拋出一個錯誤,但:

if(window.x) { /* native code */ } 

不會,因爲它會檢查x,其中所有的全局變量都存儲在窗口對象。

0

Javavscript變量沒有任何類型。這裏被初始化爲數組

var a = []; //Same as var a= new Array(); 

,我可以有任何價值

var i = 0;// Here it is an integer 
i = "Hello";// String. Type changed to string. But it is not a good practice 

JavaScript Variables and DataTypes