Javascript 为什么不';我不能从这两个代码块得到相同的结果吗?

Javascript 为什么不';我不能从这两个代码块得到相同的结果吗?,javascript,Javascript,我想知道为什么我不能从这两个代码块中得到相同的结果 var line = ""; var counter = 0; while (counter < 10) { line = line + "#"; print(line); counter = counter + 1; } var-line=”“; var计数器=0; while(计数器

我想知道为什么我不能从这两个代码块中得到相同的结果

var line = "";
var counter = 0;
while (counter < 10) {
  line = line + "#";
  print(line);
  counter = counter + 1;
}
var-line=”“;
var计数器=0;
while(计数器<10){
直线=直线+“#”;
打印(行);
计数器=计数器+1;
}
-

var NumSym=”“;
对于(i=0;i<10;i++){
打印(NumSym+“\”;
}

我也不知道这些块叫什么,也许是表达式?感谢advanced中的帮助。

在第二个块中,您没有将值存储在变量中,因此字符串连接将不起作用。所以每次都会显示一个标志

第二个街区可能是:

var NumSym = "";

  for(i = 0; i < 10; i++){
    NumSym = NumSym + "#"
    console.log(NumSym);

}
var NumSym=”“;
对于(i=0;i<10;i++){
NumSym=NumSym+“#”
console.log(NumSym);
}

理解表达的概念主题“表达式和运算符”和“语句”。

在第二个示例中,您总是打印出
NumSym
(始终为空字符串,因为您从未更改其初始值)加上一个
字符

换句话说,一系列行,每行包含一个
#

要使其等效于第一个块,可以使用如下内容:

var NumSym = "";
for (i = 0; i < 10; i++) {
    NumSym = NumSym + "#";
    print(NumSym);
}
var NumSym=”“;
对于(i=0;i<10;i++){
NumSym=NumSym+“#”;
打印(NumSym);
}

在第一个
while循环中
示例中,在每次迭代时,将附加的哈希(
#
)连接到
字符串常量:

line = line + "#";
而在第二个
for
-循环中,您没有:

print(NumSym + "#");
在第二行中,您打印
NumSym
(即
'
)的当前值,并在其中添加一个
,这样它将打印十个
。换句话说,
NumSym
的值永远不会改变。
顺便说一句:在JS中,人们普遍认为以大写字母开头的“东西”是对象构造函数,变量以小写字母开头。只是想让你知道

因为我注意到你在评论中多次提出这个问题:

语句是“一个或多个事物”的代码“行”:

表达式是语句中有意义的部分:

var result = 2*123;//where 2*123 is an expression, result = 2*123 is, too
while(result > 123)//while([expression])<-- an expression resolves in a value (true or false)
var结果=2*123//其中2*123是表达式,result=2*123也是表达式

while(result>123)//while([expression])在第二个示例中,您没有更改
NumSym
的值,它应该是由#个符号组成的半个金字塔。我让它与此代码一起工作。。。var NumSym=“”;对于(i=0;i<10;i++){NumSym+=“#”print(NumSym);}来说,这些示例是否仅称为“块”?@RufioLJ:不太可能,你可以称它们为块,但由于JS没有块作用域,所以它是毫无意义的。我只是把它们称为
,而
-loop和
分别指
-loop是的,我是在最后一分钟才弄明白的。该死的,我发誓在发布这个问题之前我读了很多遍。。我在第100次之后收到了它,当时我已经发布了lol。谢谢你的时间。这些线也被称为“块”吗?他们不是在表达吗?@RufioLJ,发帖后应该有10分钟的延迟时间,这样问题就可以在海报以外的人看到,这样你就可以删除它而不会显得愚蠢。我也这样做过几次:-)不,我不是真的在暗示,因为即使现在海报上的问题看起来很明显,它仍然可能对其他人有帮助。谢谢最后的提示。我真的很感激。
var foo;//stmt declaring a variable, called foo (implicitly initialized to undefined)
var foo = 'bar';//stmt declares AND assigns a string constant to the variable
var foo, bar, x = 1;//statement, consisting of 4 expressions
var result = 2*123;//where 2*123 is an expression, result = 2*123 is, too
while(result > 123)//while([expression])<-- an expression resolves in a value (true or false)
int x = 0;//global
int main()
{
    int x = ::x;//function scope
    for (int x=0;x<10;x++)
    {//x == loop scope, ::x == global x
        printf("In loop x: %d, outer x: %d\n",x, ::x);
        ::x = x%2 == 0 ? x : ::x;
    }
    if (x == 0)
    {
        printf("true\n");//will show up on the screen!
    }
    return x;
}