2013-10-06 21 views
0

JavaScript新增功能。用下面的代碼,特別看第二段... if var str =「sting equal test ...」+ strA,爲什麼第二行,第三行等不能輸出相同的輸出和自己的行?在Javascript中使用字符串進行合併

編輯對不起,沒有正確解釋 - 我其實只是想知道爲什麼這個代碼(一旦我已經清理它)不會產生重複的第一行(第二段),再加上我在第二和第三行等我不需要它,它只是一個練習,我只是不明白。它好像它應該

function init() 
{ 
var strA = "Javascript" === "JAVASCRIPT" ; 
var strB = "Javascript" === "Javascript" ; 
var flt = 7.5 === 7.5 ; 
var intA = 8 !== 8 ; 
var intB = 24 > 12 ; 
var intC = 24 < 12 ; 
var intD = 24 <= 24 ; 

var str = "String equality test: " + strA ; 
str += "<br>String equality test 2: " + strB ; 
str += "<br>Float equality test: " ; + strC ; 
str += "<br>Integer inequality test: " + intA ; 
str += "<br>Greater than test: " + intB ; 
str += "<br>Less than test: " + intC ; 
str += "<br>Less than/Equal to test: " + intD ; 

document.getElementById("panel").innerHTML = str ; 



} 
document.addEventListener("DOMContentLoaded" , init , false) ; 

所以我得到的輸出isas如下;

字符串相等測試:假 字符串相等測試2:真 浮子相等測試:真 整數不等式測試:假 比測試大:真 比測試減:假 小於/等於測試:真

這顯然是正確的,我只是不明白,像下面這樣的心不是如何輸出,因爲肯定我添加的每一行VAR海峽,這是「字符串equakity試驗:假

 String equality test: false 
String equality test: false String equality test 2: true 
String equality test: false Float equality test: true 
String equality test: false Integer inequality test: false 
String equality test: false Greater than test: true 
String equality test: false Less than test: false 
String equality test: false Less than/Equal to test: true 
+0

爲什麼在第三行中有一個神祕的浮動';'? –

+0

^^因爲沒有strC? – 2013-10-06 14:32:44

+0

@Jeffman:那是對我還是OP的迴應? DJC:如果你看過你的Web開發者工具(大多數瀏覽器中的F12),他們會告訴你這一點。另外,按下'JS Hint'按鈕,如果你將一個[JS小提琴](http://jsfiddle.net/)放在一起。 –

回答

0

我只是不明白,像下面這樣的心不是如何輸出,因爲肯定我添加的每一行VAR str,這是"String equakity test: false"

不,那str是唯一的一次等於"String equality test: false"就在第一行之後。每條線都會修改str變量,方法是在之前的行之後添加任何內容。因此,第一個行後:

var str = "String equality test: " + strA ; 

...變量str現在等於

"String equality test: false" 

然後第二個行之後:

str += "<br>String equality test 2: " + strB ; 

...變量str是現在等於

"String equality test: false<br>String equality test 2:" 

第三行有錯誤,但假設你刪除多餘的分號並固定變量名:

str += "<br>Float equality test: " ; + strC ; 
// should be 
str += "<br>Float equality test: " + flt; 

...那麼變量str將等於

"String equality test: false<br>String equality test 2: true<br>Float equality test: true" 

...等等。

如果您在每行之間添加console.log(str);語句並在運行代碼之前打開瀏覽器的控制檯,則可以清楚地看到此內容。如下所示:http://jsfiddle.net/mfKy9/

+0

,非常明確和有益的。我只是對+ =感到困惑,認爲它保留了行,然後再添加下一行,而像你說的那樣,它實際上取代了以前的var str值。謝謝! – DJC

1

+前面的第三行有一個;。刪除應該解決問題。在奇怪的+之後您嘗試添加的變量strC不存在。

+0

謝謝,現在已經改變了,但請看看我的編輯,對不起,第一次沒有正確解釋 – DJC

+0

@DJC,你的意思是你的代碼在解決我提到的問題後仍然沒有輸出所有行? –

+0

這是一本書的練習,我想了解爲什麼var str在第二行,第三行等中使用時不包含「字符串相等性測試」位,而不是我已經定義的那樣。其他的線看起來好像他們應該產生,然後他們包含的附加值? – DJC