codecademy javascript explain"+&引用;

codecademy javascript explain"+&引用;,javascript,Javascript,我目前正在codecademy.com上学习JS,让我印象深刻的是: "Hi, I am" + " " + name 这是一个简单的函数返回,当你把你的名字放进 printName(name) 它返回: 你好,我是{name} 那么,他们为什么不把它简化成 "Hi, I am " + name “+”有什么原因吗 对不起,这是一种奇怪的打印方式:/不。没有理由不能像“嗨,我是”+name;那样简单。它们会产生相同的结果 我猜他们是这样写的,这样你就养成了在连接字符串时添加空格的习惯(因为

我目前正在codecademy.com上学习JS,让我印象深刻的是:

"Hi, I am" + " " + name
这是一个简单的函数返回,当你把你的名字放进

printName(name)
它返回:

你好,我是{name} 那么,他们为什么不把它简化成

"Hi, I am " + name
“+”有什么原因吗


对不起,这是一种奇怪的打印方式:/

不。没有理由不能像“嗨,我是”+name;那样简单。它们会产生相同的结果


我猜他们是这样写的,这样你就养成了在连接字符串时添加空格的习惯(因为变量通常不包含前导/尾随空格).

没有理由。也许他们最初打算让您为名字和姓氏输入两个变量,中间有一个空格,但后来简化了演示,忘记了将空格移到第一个字符串中

这是我的猜测,但是没有理由不按照你说的去做。事实上,如果你真的想学究气,他们的例子是低效的,因为字符串连接需要一些开销,所以他们的版本性能会稍差。虽然你不会注意到,直到你在一个循环中反复做同样的操作然后比较两者

startTimer('with concat');
for (var count=0; count<99999; count++) {
  var someString = "Hi, I am" + " " + name;
}
stopTimer('with concat');

startTimer('without concat');
for (var count=0; count<99999; count++) {
  var someString = "Hi, I am " + name;
}
stopTimer('without concat');
startTimer('with concat');

对于(var count=0;count我不知道他们的推理是什么,但是在EcmaScript+中,加法和字符串合并都重载了

考虑以下几点:

console.log("Hi: " + 12 + 13);
> "Hi: 1213"
console.log("Hi: " + "" + 12 + "" + 13);
> "Hi: 1213"
console.log("Hi: " + (12 + 13));
> "Hi: 25"

我不知道他们使用额外引号的原因是什么,但在值前加“+”会自动执行类型强制,这可能是可取的,也可能是不可取的。

代码中的“+”用于添加额外对象以生成字符串


是的,codecademy.com实际上可以将
“嗨,我是”+“+name
”简化为
“嗨,我是”+name
,但该网站只用于教你基本的代码——在本例中是JavaScript。你可以将代码简化为
“嗨,我是”+name
,但这不是任务想要的(你可以在网站外自己的代码中执行此操作)。

他们可能希望显示文字字符串与其他文字字符串而不仅仅是变量一起添加。或者没有理由。大多数(如果不是所有)代码都是不完美的代码,还有改进的余地。这通常也适用于教育代码示例。