2016-07-13 17 views
-1

你好,我實際上認爲這樣的東西會在JavaScript中工作。我聲明瞭這個變量,我想重新聲明並重新分配它,但是如果它之前是未定義的,那麼代碼應該被忽略,但它會像錯誤一樣。請看看我做了什麼。我如何使用條件重新分配和聲明新變量

  var car = 'BMW'; 
     console.log(car);//returns BMW 
     if (car === undefined) 
     var car = 'Saab'; 
     console.log(car)// returns Saab 

我認爲它應該返回寶馬。我錯了嗎? 我想做的事情是讓javascript忽略Saab的第二次賦值給汽車變量,因爲我認爲條件指定了saab的值只有在未定義時才應該重新分配給汽車變量,或者沒有定義的。但是它被定義了,但是仍然打印出來,是if語句實際上是錯誤的,因爲就我而言,我沒有達到我想要的。

+1

你在哪裏/如何測試這個?它記錄了兩次「寶馬」,而不是「薩博」。 – str

+0

1)不要在同一個變量上多次使用'var'。 2)'var'關鍵字有*函數*範圍,而不是*塊*範圍。爲塊範圍使用ES6'let' /'const'。 – gcampbell

+0

它不會記錄「saab」......因爲@str問道:「你是如何測試這個的?」,你能在小提琴中顯示輸出嗎? – Sankar

回答

0

使用此

  var car = 'BMW'; 
     console.log(car);//returns BMW 
     if (car === undefined){ 
       var car = 'Saab'; 

     } 
     console.log(car)// returns Saab 

您可以car = 'Saab';替代var car = 'Saab';創建變量汽車在全球範圍內。

+0

我實際上打算看看我是否可以控制流量,通過使javascript忽略重新定義車。我希望像以前一樣看到寶馬,沒有薩博。謝謝 – pedroyanky

+0

是啊謝謝它實際上按照預期的方式{}如何如此。 – pedroyanky

0

與大多數語言一樣,您不要多次聲明變量。但是,您可以根據自己的喜好重新分配。

 var car = 'BMW'; 
    console.log(car);//returns BMW 
    if (car === undefined) 
    car = 'Saab'; 
    console.log(car)// returns Saab 
+2

請編輯更多信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。 – abarisone