[英]Unexpected token :
<script>
function createPerson(firstName, lastName)
{
return
{
firstName: firstName,
lastName: lastName, //This line!!!
getFullName: function() {
return this.firstName + " " + this.lastName;
},
greet: function(person)
{
alert("Hello, " + person.getFullName() + "I'm " + this.getFullName());
}
};
}
var johnDoe = createPerson("John" , "Doe");
var janeDoe = createPerson("Jane" , "Doe");
johnDoe.greet(janeDoe);
</script>
为什么这一行会抛出错误? “意外的标记 :”。 这是一本书的例子,我做了完全相同的事情,但这个错误出现了。 不知道出了什么问题。
你不能在return
语句前断行。
function createPerson(firstName, lastName) { return { firstName: firstName, lastName: lastName, //This line!!! getFullName: function() { return this.firstName + " " + this.lastName; }, greet: function(person) { console.log("Hello, " + person.getFullName() + "I'm " + this.getFullName()); } }; } var johnDoe = createPerson("John" , "Doe"); var janeDoe = createPerson("Jane" , "Doe"); johnDoe.greet(janeDoe);
return
后删除换行符。 作为换行符被视为;
由于JavaScript的自动分号插入
演示
function foo() { return 'foo'; } console.log(foo()) // undefined function bar() { return 'bar'; } console.log(bar()) // bar
您的代码片段已修复
function createPerson(firstName, lastName) { return { firstName: firstName, lastName: lastName, getFullName: function() { return this.firstName + " " + this.lastName; }, greet: function(person) { console.log("Hello, " + person.getFullName() + "I'm " + this.getFullName()); } }; } var johnDoe = createPerson("John" , "Doe"); var janeDoe = createPerson("Jane" , "Doe"); johnDoe.greet(janeDoe);
详细说明实际错误:
{..}
被解释为一个块。firstName:
被解释为标签。firstName, lastName: lastName
被解释为需要两个表达式的逗号运算符,lastName: lastName
不是有效表达式,因为:
此处无效。 因此错误“意外的令牌:” 。 - 菲利克斯克林
你有
return
{
Javascript有自动分号插入; 对于interpter,你的代码看起来像
return;
{
因为{
在下一行,并且因为它本身存在是合法的。
把{
放在与return
相同的行上:
return {
// ...
它失败了,因为它相当于:
function createPerson(firstName, lastName)
{
return;
{
firstName: firstName,
lastName: lastName, //This line!!!
getFullName: function() {
return this.firstName + " " + this.lastName;
},
greet: function(person)
{
alert("Hello, " + person.getFullName() + "I'm " + this.getFullName());
}
};
}
var johnDoe = createPerson("John" , "Doe");
var janeDoe = createPerson("Jane" , "Doe");
johnDoe.greet(janeDoe);
由于自动分叉插入。 这就是为什么更常见的风格是在同一条线上打开蕨菜。
function createPerson(firstName, lastName) {
return {
firstName: firstName,
lastName: lastName, //This line!!!
getFullName: function() {
return this.firstName + " " + this.lastName;
},
greet: function(person) {
alert("Hello, " + person.getFullName() + "I'm " + this.getFullName());
}
};
}
var johnDoe = createPerson("John" , "Doe");
var janeDoe = createPerson("Jane" , "Doe");
johnDoe.greet(janeDoe);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.