codecademy javascript解释“+”

时间:2015-06-09 17:38:10

标签: javascript

我目前正在使用codecademy.com学习JS,其中一件让我印象深刻的是:

"Hi, I am" + " " + name

这是一个简单的函数返回函数,当你把它放入

时打印你的名字
printName(name)

然后它返回:

Hi, I am {name}

所以,为什么他们不把它简化为

"Hi, I am " + name

“+”是否有理由?

抱歉输入了这种奇怪的方式:/

4 个答案:

答案 0 :(得分:2)

不。没有理由不能像"Hi, I am " + name;一样容易。它们产生相同的结果。

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

答案 1 :(得分:1)

没有理由。也许他们最初打算你输入名字和姓氏之间的两个变量,并在它们之间留一个空格,但后来简化了演示并忘了将空格移到第​​一个字符串中?

这是我的猜测,但没有理由不做你说的话。事实上,如果 真的 想要变得迂腐,他们的示例效率低下,因为字符串连接需要一些开销,所以他们的版本稍微性能较差。虽然你不会注意到你在循环中反复做同样的操作,然后比较两者。

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

演示:http://codepen.io/Chevex/pen/gpWNeq?editors=001

差异可以忽略不计,但你可以看到有一个:D

答案 2 :(得分:0)

我不知道他们的推理是什么,但是在EcmaScript +中,加法和字符串连接都被重载了。

请考虑以下事项:

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

我不知道他们对额外报价的理由是什么,但将“+”加到某个值会自动执行类型强制,这可能是也可能不是。

答案 3 :(得分:0)

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

是的,codecademy.com实际上可以将"Hi, I am" + " " + name简化为"Hi, I am " + name,但该网站仅用于教您代码的基础知识 - 在本例中为JavaScript。您可以将代码简化为"Hi, I am " + name,但这不是任务所需(您可以在网站之外的自己的代码中执行此操作)。