Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中连接字符串?_Javascript - Fatal编程技术网

在Javascript中连接字符串?

在Javascript中连接字符串?,javascript,Javascript,使用下面的代码,特别是第2段……如果var str=“sting equality test…”+strA,为什么第2行、第3行等不输出相同的输出加上自己的行 编辑抱歉没有正确解释-我实际上只是想知道为什么这段代码(一旦我清理了它)没有产生重复的第一行(第二段),再加上我在第二行和第三行中陈述的内容等等。我不需要它,这只是一个练习,我只是不明白。似乎应该这样 function init() { var strA = "Javascript" === "JAVASCRIPT" ;

使用下面的代码,特别是第2段……如果var str=“sting equality 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) ;
函数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在
+
前面的第三行有一个
。删除它应该可以解决问题。在奇怪的
+
之后尝试添加的变量
strC
不存在

我只是不明白下面这样的内容是如何不被输出的,因为我肯定是在将每一行添加到var
str
,这就是
“字符串相等性测试:false”

不,唯一一次
str
等于
“字符串相等性测试:false”
的时间就在第一行之后。每一行通过在前一行之后的任何变量中添加某些内容来修改
str
变量。因此,在第一行之后:

var str = "String equality test: " + strA ;
…变量
str
现在等于

"String equality test: false"
"String equality test: false<br>String equality test 2:"
然后在第二行之后:

str += "<br>String equality test 2: " + strB ;
第三行有一个错误,但假设您删除了额外的分号并修复了变量名:

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


如果添加
console.log(str),您可以清楚地看到这一点;
语句,然后在运行代码之前打开浏览器的控制台。如图所示:

为什么在第三行有一个神秘的浮动
?^^因为没有strC?@Jeffman:这是对我的回应,还是OP?DJC:如果你看过你的Web开发工具(大多数浏览器中的F12)他们会告诉你的。另外,如果你想组合一个@David twith,我想,按“JS Hint”按钮。对于OP,未定义的变量可能是一个问题。对于你来说,这个看似不正确的;可能是一个错误的尝试,试图短路不存在的值的串联。谢谢,现在已经更改了,但请参阅我的编辑第一次解释得不好真让人担心around@DJC,您的意思是,在解决了我提到的问题后,您的代码仍然没有输出所有行?这是一本书中的练习,我试图理解为什么在第2行、第3行等中使用var str时,不包括“字符串相等性测试”bit as不是我定义的。其他行看起来似乎应该产生它,然后是它们包含的附加值?你能将你的确切输出和你的预期输出添加到问题中吗?抱歉耽搁了,我将用预期和实际输出编辑问题。谢谢你的帮助,非常感谢感谢,非常清楚,非常有用pful。我只是对+=,感到困惑,认为它是保留行,然后添加下一行,而就像你说的,它实际上是在替换var str的前一个值。谢谢!
str += "<br>Float equality test: " ; + strC ;
// should be
str += "<br>Float equality test: " + flt;
"String equality test: false<br>String equality test 2: true<br>Float equality test: true"