【问题标题】:Concatenating strings in Javascript?在Javascript中连接字符串?
【发布时间】:2013-10-13 03:31:16
【问题描述】:

使用下面的代码,特别是看第 2 段...如果 var str = "sting equal test..." + strA,为什么第 2、第 3 行等不输出相同的输出加上他们自己的行?

编辑抱歉没有正确解释 - 我实际上只是想知道为什么这段代码(一旦我清理它)不会重复产生第一行(第二段的),加上我在第二和第三段中所说的任何内容线条等。我不需要它,这只是一个练习,我只是不明白。好像应该的

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) ;

所以我得到的输出如下;

字符串相等性测试:假
字符串相等测试 2:true
浮点相等测试:true
整数不等式检验:假
大于测试:true
小于测试:假
小于/等于测试:真

这显然是正确的,我只是不明白如何不输出如下内容,因为我肯定将每一行添加到 var str,即“String equakity test: false

 字符串相等性测试:false
字符串相等测试:false 字符串相等测试 2:true
字符串相等测试:false 浮点相等测试:true
字符串相等测试:false 整数不等测试:false
字符串相等测试:false 大于测试:true
字符串相等测试:false 小于测试:false
字符串相等测试:false 小于/等于测试:true

【问题讨论】:

  • 为什么第三行有一个神秘的浮动;
  • ^^ 因为没有 strC ?
  • @Jeffman:这是对我的回应,还是对 OP 的回应? DJC:如果您查看您的 Web 开发工具(大多数浏览器中的 F12),他们会告诉您这一点。此外,如果您想将JS Fiddle 放在一起,请按“JS 提示”按钮。
  • @David 两个,我猜。对于 OP,未定义的变量可能是个问题。对你来说,看似流浪;可能是对不存在的值的串联进行短路的错误尝试。

标签: javascript


【解决方案1】:

+ 前面的第三行有一个;。删除它应该可以解决问题。您尝试在奇怪的+ 之后添加的变量strC 不存在。

【讨论】:

  • 谢谢,现在已经改变了,但是请看我的编辑,很抱歉第一次没有正确解释
  • @DJC,你的意思是你的代码在解决了我提到的问题后仍然没有输出所有行?
  • 这是一本书的练习,我试图理解为什么 var str 在第 2 行、第 3 行等中使用时不包含“字符串相等测试”位,因为不包含这就是我所定义的。其他行看起来好像应该产生它,然后它们包含的附加值?
  • 您能否将您的确切输出和预期输出添加到问题中?
  • 抱歉耽搁了,将编辑带有预期和实际输出的问题。感谢您的帮助,非常感谢
【解决方案2】:

我只是不明白如何输出类似以下内容,因为我肯定将每一行添加到 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/

【讨论】:

  • 谢谢你,非常清楚和乐于助人。我只是对 += 感到困惑,认为它是保留该行然后添加下一个,而就像您说的那样,它实际上是在替换 var str 的先前值。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
相关资源
最近更新 更多