пятница, 17 августа 2012 г.

Фигурные кавычки в JavaScript

Существуют два С-подобных стиля фигурных кавычек
// Первый
Foo() 
{

}

// Второй
Foo() {

}

Оба очень активно используются в PHP и JavaScript, но меня всегда интересовал вопрос: почему последний вариант наиболее популярен в JavaScript, а первый в PHP/С++/С#. Теперь я знаю ответ: размещение скобки на той же линии после оператора помогает избежать глупых ошибок, возможно благодаря стандарту ECMASrcipt.

В нем говорится следующее:
Certain ECMAScript statements (empty statement, variable statement, expression statement, do-while statement, continue statement, break statement, return statement, and throw statement) must be terminated with semicolons. Such semicolons may always appear explicitly in the source text. For convenience, however, such semicolons may be omitted from the source text in certain situations. These situations are described by saying that semicolons are automatically inserted into the source code token stream in those situations.

Приведу небольшой пример для понимания того, что они имеют ввиду:
function FooA() {  
    return  
    {  
        x: 8  
    };  
};  
  
function FooB() {  
    return {  
        x: 8  
    };  
};  
  
function Bar() {  
    console.log(FooA().x);  
    console.log(FooB().x);  
}  

После вызова функции Bar() мы увидим "undefined" и "8". Это произошло благодаря тому, что JavaScript очень умен и поставил точку с запятой после оператора return. То есть интерпретатор никогда не дойдет до нашего анонимного объекта. Почему? "Для удобства", - говорит нам ECMAScript. Наслаждайтесь полученной информацией и пусть программирование на JavaScript приносит вам только удовольствие. Как мне ;)

Комментариев нет:

Отправить комментарий