[noob][javascript] грамотность написания
1) область видимости
2) ; не обязательна вообще
3) good practice - {} всегда, за исключением однострочных if'ов
2) ; не обязательна вообще
3) good practice - {} всегда, за исключением однострочных if'ов
if (condition)
{
var1 = 'foo'
var2 = 'foo2'
}
if (condition) var = 'foo'
2) http://stackoverflow.com/a/1834674
В случае именной функции ; не нужна, т.е. лучше не писать.
В случае анонимной функции лучше писать, ибо возможны неприятные баги:
В случае именной функции ; не нужна, т.е. лучше не писать.
В случае анонимной функции лучше писать, ибо возможны неприятные баги:
var myFn = function {
alert("Surprise!");
} // <-- No semicolon!
(function {
//...
};
1) есть ли разница в написании:
code:
function myFunction(vars) {code}
и
code:
var myFunction = function(vars) {code}
Первый вариант эквивалентен
myFunction = function(vars) {code}
Этот код кладет функцию в глобальный объект, что не очень хорошо. Желательно, чтобы такого кода не было, функции должны быть распределены по классам и модулям.
Советую использовать библиотеку require.js или аналог.
2) после блоков "{}" не ставятся ";", но в случае присваивания анонимной функции переменной (встречала в примерах) ее ставят.
Настоятельно рекомендую использовать jslint. Все, что пропускает jslint, хорошо, что не пропускает, плохо.
Может пригодиться: тут представлены популярные соглашения о написании js-кода и приведено их сравнение.
Действительно ли есть опасность неправильного выполнения при отсутствии "{}"?
function foo(x){
if (x>0)
if (x<2) return 1;
else
return 0;
return 100500;
}
что вернет вызов:
?
foo(2);
Я бы подвинула 4 и 5 строку на еще один отступ. А то выглядит, как попытка разыграть.
После этого предположила бы, что 0.
После этого предположила бы, что 0.
Ответившим спасибо, понимания прибавилось.
Вы такие милые! А мне сказали, что вы меня с моими нубовопросами на части порвете.
require.js пока не пробовала. jslint ругается чуть ли не на каждую строку (отступы не те, использовать строгий синтаксис, прочее но вещь полезная (правда этот весь код разбирать не хочет, останавливается на n%).
Winning style — в закладки.
Вы такие милые! А мне сказали, что вы меня с моими нубовопросами на части порвете.
require.js пока не пробовала. jslint ругается чуть ли не на каждую строку (отступы не те, использовать строгий синтаксис, прочее но вещь полезная (правда этот весь код разбирать не хочет, останавливается на n%).
Winning style — в закладки.
выглядит, как попытка разыграть.ну вот я раз и разыграл себя: написал внешний if-else, потом добавил внутренний if и долго думал что же не так )
А мне сказали, что вы меня с моими нубовопросами на части порвете.А ты уже расслабилась...![]()

Первый вариант эквивалентенНеправда.
myFunction = function(vars) {code}
Этот код кладет функцию в глобальный объект, что не очень хорошо. Желательно, чтобы такого кода не было, функции должны быть распределены по классам и модулям.
function a {
function x {
...
}
}
x // Будет ошибка тут функцию x не видно
Главная разница во времени создания.
http://learn.javascript.ru/function-declaration-expression
можно писатьМожно, но когда ты захочешь добавить ещё одно выражение, то придётся добавлять и скобки, например
if (!MyVar)
doSomething(vars);
else
doSomethingElse(vars);
if (!MyVar)
console.log(vars); // ooops
doSomething(vars);
else
doSomethingElse(vars);
А вообще много есть у Крокфорда в приложении к его Javascript: The Good Parts
Учимся читать до конца.


Главная разница во времени создания.
Так и есть, спасибо за информацию.
Оставить комментарий
TeridaX
Здравствуйте, доброфорумчане-девелоперы (хотя подозреваю, что троллодевелоперы все равно влезут).Практикую js, и возникло несколько вопросов, не подскажете?
В основном по блокам и точкам с запятыми.
1) есть ли разница в написании:
function myFunction(vars) {code}и
var myFunction = function(vars) {code}2) после блоков "{}" не ставятся ";", но в случае присваивания анонимной функции переменной (встречала в примерах) ее ставят.
а) Обязателен ли знак?
б) Если нет, лучше его ставить везде или нигде?
3) В случае условных операторов, читала, что при однострочном выполнении блок из "{}" не обязателен.
Т.е. вместо
if (!MyVar) {doSomething(vars);}else {doSomethingElse(vars);}
можно писать
Потом встретила при просмотре примеров мнение, что лучше всегда ставить "{}". Мол, есть какие-то особые случаи...
а) Действительно ли есть опасность неправильного выполнения при отсутствии "{}"?
б) Нужны ли ";" в таких однострочных выражениях (как с применением "{}", так и без).
Заранее спасибо!
П.С.: Прошу троллей обходить тред лесом.