2011-03-28 3 views
-3

Теперь, когда у меня есть другие вопросы, эта функция не работает. Что не так?Почему моя функция не работает?

Weird JavaScript statement, what does it mean?

How to handle click event in javascript?

function myFunc() { 
    return 
    { 
     obj = this; 
    }; 
} 
+0

Что вы делаете _trying_? – canon

+1

Пытается вернуть объект из моей функции. –

+0

У меня возникает соблазн, что этот вопрос будет закрыт, но несколько человек уже ответили на него. В этой функции есть две синтаксические ошибки. Исправьте оба из них, и он будет работать, как ожидалось. –

ответ

6

Ваша функция не работает из-за того, как JavaScript автоматически добавляет точки с запятой.

return Ваше заявление читается JavaScript как:

return; 
{ 
    obj: this; 
}; 

Вы должны поместить { на той же линии, как return:

return{ 
    obj: this; 
}; 

Кроме того, объекты должны быть {name: value}.

+0

Я пробовал, но все еще не работал. Я не думаю, что ваши вещи правы. –

+0

Вы правы в отношении точек с запятой, но 'obj = this' недопустимо внутри конструктора объекта. Только в блоке. Я думаю, что '=' должен стать двоеточием. –

+0

@Stack Guru: Он должен работать сейчас. –

6

Синтаксис для создания литерала объекта является:

{ foo: bar } 

не

{ foo = bar } 

Кроме того, в JavaScript новая строка может прервать утверждение. Поместив новую строку после return, вы возвращаете undefined, и литеральный код объекта никогда не будет достигнут. JSLint может подобрать этот тип проблем.

5

Это из-за употребления точки с запятой.

Это:

return 
    { myProperty: "hello world" }; 

анализируется так:

<< return statement >> 
<< pointless object literal expression >> 

И не как:

<< return statement with return value expression >> 

Чтобы вернуть значение объекта, ваш код должен выглядеть это:

return { 
    myProperty: "hello world" 
}; 

с { на той же линии, какreturn.

+0

Но у меня есть брандмауэр, чтобы предотвратить это, что теперь? –

+2

Я думаю, вы имеете в виду точку с запятой. –

+5

@Stack Guru, где я могу получить этот брандмауэр? –

Смежные вопросы