Pull to refresh
30
0
Алексей @Silver_Clash

User

Send message
Вы практически полностью описали мое рабочее место. Осталось сменить FF на Chrom, а netbeans на PHPStorm.
Цитата приведена не для того что бы холивар разводить. А только для подтверждения моих слов. Если эта информация неточна, дайте ссылочку на источник, где можно пробелы в знаниях заполнить. :)
Пол часа искал:
«Если присвоить значение переменной, не объявленной с помощью инструкции var, JavaScript неявно объявит эту переменную за вас. Однако переменные, объявленные таким образом, всегда создаются как глобальные, даже если они работают только в теле функции. Чтобы не создавать глобальную переменную (или не использовать существующую), когда достаточно локальной переменной для отдельной функции, всегда помещайте инструкцию var в тело функции. Лучше всего объявлять с ключевым словом var все переменные – и глобальные, и локальные.»

Дэвид Флэнаган. JavaScript. Подробное руководство. 5-е издание. стр. 69
Вообще это не я писал, но в целом поддерживаю, у меня тоже true в обоих случаях
Поправка, конечно же речь об инициализации свойства глобального объекта. :)
Спасибо, пример хороший, но то что foo = 1; это объявление переменной — это не очевидно.
Извините, я исправлюсь :)

Но по поводу ваших замечаний, я соглашусь не со всеми:

«Стандарт определяет только один тип переменных.,
Отсутствие спецификатора var при объявлении — свидетельствует об инициализации свойства глобального объекта.»
Во-первых, я не говорил про тип переменных, вы что то спутали, я говорил про способы объявления переменной. А как вы отличаете «Отсутствие спецификатора var при объявлении» от обращения к переменной объявленной в объемлющей функции?

«Почему ни слова о функции eval, конструкторе Function, инструкции with?» Потому что не было у меня такой цели. Почитайте пожалуйста заголовок топика. Более того, я бы с удовольствием прочитал вашу заметку об этом, написать свою пока не могу, не хватает времени.

«Не подумайте что я придираюсь, но читать стандарт перед написанием таких тем и знать о том что тема уже раскрыта (1, 2, 3, 4, 5, 6, 7) в других местах просто необходимо.»

Автор на которого вы ссылаетесь, мне незнаком. Изучу на досуге.
странно, а у меня «ReferenceError: z is not defined»
Доказательство чего? Я например пишу new и не страдаю, это тоже доказательство? :)
Вы не правы. Далеко не все люди на собеседованиях волнуются, а многие если и волнуются, не дадут вам ни единого шанса понять это. К тому же подобные задачи даются обычно не для того что бы просто получить ответ, а для того что бы проследить ход рассуждений испытуемого. Если собеседование проводит грамотный специалист, решение может быть положительным, даже если ответ на вопрос (вопросы) неверный, но ход рассуждения верен.
Вам правильно советуют, учитесь управлять эмоциями. Собеседование не самая страшная вещь в жизни, и надо уметь взвешенно принимать решения вместо того что бы отдаваться эмоциям с головой.
Я думаю этот вопрос все же лучше рассмотреть отдельно, потому что если рассматривать их в одном топике, топик будет слишком сложным.
Утечки памяти это в первую очередь особенность реализации интерпретатора. То есть попросту говоря они зависят от того где используется ваш код. Я пока не готов подробно описать утечки, просто времени не хватает. :)
Я пока не эксперт, поясните подробнее. Под всплытием имеется ввиду объявление переменных в конце тела функции? Если так, то действительно стоит рассмотреть этот вопрос, но это уже особенности явного и неявного объявления переменных — это тема другого микро-топика.
На самом деле, в топике объясняется почему это происходит, но пример хороший, упомянуть действительно стоит. Сейчас оформим.
Я лично никого не собеседую, но ваших аргументов не понимаю. Пример то очень простой. Напишу-ка я маленький топик с разбором этого примера…
Не надо никого бить. Используйте this в конструкторах, и будет вам счастье.
Неплохой пост, но если уж заговорили про контекст, то и про лексическую область видимости функций было бы неплохо рассказать тут же.
Например что будет в таком примере и почему:

var y = 5;
var x = function(){
    return y;
};
var z = function(t){
    var y = 10;
    return t();
}
z(x);
19.5, 2 звезды :)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity