Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.09.2014, 17:46
Интересующийся
Отправить личное сообщение для extrabass4 Посмотреть профиль Найти все сообщения от extrabass4
 
Регистрация: 25.06.2014
Сообщений: 20

вопросы по учебнику
Здравствуйте. Возникло пару вопросов-собственно вот они:
var arr = [1,7,8,3,7,3,22,4]
function compareNumeric(a, b) {
return a - b;
}
sort(compareNumeric);// 1 3 3 4 7 8 22

то есть алгоритм таков
1 - 7, где а это 1, а b это 7. При этом выражение 1-7 результат равен отрицательному числу и а остаётся с левой стороны, но если же было бы положительным, то они бы поменялись местами - таким способом действует эта сортировка ? Алгоритм быстрой сортировки понятен - мне ДО КОНЦА не понятно каким образом действует передаваемая функция в метод sort()

Последний раз редактировалось extrabass4, 27.09.2014 в 17:54.
Ответить с цитированием
  #2 (permalink)  
Старый 27.09.2014, 18:23
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Функция должна вернуть отрицательное число, если b должно стоять после a, положительное число, если a должно стоять после b и 0, если a и b равны. В общем, да, так и есть.
Ответить с цитированием
  #3 (permalink)  
Старый 27.09.2014, 18:32
Интересующийся
Отправить личное сообщение для extrabass4 Посмотреть профиль Найти все сообщения от extrabass4
 
Регистрация: 25.06.2014
Сообщений: 20

Спасибо за ответ. ТО есть всё основное внимание на параметр функц. a и определение его места по отношению к b элементу ?
Ответить с цитированием
  #4 (permalink)  
Старый 27.09.2014, 20:44
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Да.
Ответить с цитированием
  #5 (permalink)  
Старый 28.09.2014, 17:20
Интересующийся
Отправить личное сообщение для extrabass4 Посмотреть профиль Найти все сообщения от extrabass4
 
Регистрация: 25.06.2014
Сообщений: 20

А при function expression, ведь переменная является ссылкой ?

Последний раз редактировалось extrabass4, 28.09.2014 в 17:33.
Ответить с цитированием
  #6 (permalink)  
Старый 28.09.2014, 18:35
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Объекты в жс передаются по ссылкам. Функция - объект, массив - объект, в общем, все, что не примитив - объект.
Ответить с цитированием
  #7 (permalink)  
Старый 28.09.2014, 23:37
Интересующийся
Отправить личное сообщение для extrabass4 Посмотреть профиль Найти все сообщения от extrabass4
 
Регистрация: 25.06.2014
Сообщений: 20

Сообщение от Erolast Посмотреть сообщение
Объекты в жс передаются по ссылкам. Функция - объект, массив - объект, в общем, все, что не примитив - объект.
А где тогда хранятся все эти функции и объекты (особенно при function expression)? Или же она не хранится, а просто выполняется когда код доходит до этого места и с массивами тоже самое, так ?

Последний раз редактировалось extrabass4, 28.09.2014 в 23:40.
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2014, 12:57
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
А где тогда хранятся все эти функции и объекты (особенно при function expression)?
Очевидно, в той области видимости, в которой объявляются. Но передаются они с помощью ссылок, прямого доступа ты к ним не имеешь. Это удобно, на самом деле.
Цитата:
Или же она не хранится, а просто выполняется когда код доходит до этого места и с массивами тоже самое, так ?
Нет, она объявляется и хранится, пока ее не удалит сборщик мусора.
Ответить с цитированием
  #9 (permalink)  
Старый 29.09.2014, 22:51
Интересующийся
Отправить личное сообщение для extrabass4 Посмотреть профиль Найти все сообщения от extrabass4
 
Регистрация: 25.06.2014
Сообщений: 20

Сообщение от Erolast Посмотреть сообщение
Очевидно, в той области видимости, в которой объявляются. Но передаются они с помощью ссылок, прямого доступа ты к ним не имеешь. Это удобно, на самом деле.

Нет, она объявляется и хранится, пока ее не удалит сборщик мусора.
Хмм, а вот как тут тогда :
<script>
var a = 0;
var sayH = function() {
var phrase = "Привет";
alert(phrase);
}

</script>

До выполнения кода интерпретатор сохранит в global object(window)
window = { a:undefined, sayH: undefined }
Но, а как тогда заранее создастся LexicalEnvironment для var sayH = function(), если присвоение произойдёт, только когда дойдём до этого участка кода?


И можно поподробнее о сборщике мусора желательно с примером и алгоритмом действия.
Заранее благодарен

Последний раз редактировалось extrabass4, 29.09.2014 в 23:05.
Ответить с цитированием
  #10 (permalink)  
Старый 29.09.2014, 23:46
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от extrabass4
ведь переменная является ссылкой
переменная является переменной, является абстракцией и хранит значения, смысл которых (для человека) интерпретируется в соответствии с алгоритмами, описанными в спецификации

Сообщение от extrabass4
А где тогда хранятся все эти ... объекты
в переменной можно хранить значения-ссылки на объекты, сами объекты хранятся в куче (heap)

Сообщение от extrabass4
Но, а как тогда заранее создастся LexicalEnvironment для var sayH = function(), если присвоение произойдёт, только когда дойдём до этого участка кода?
http://es5.javascript.ru/x11.html#x11.13.1
Цитата:
Для вычисления AssignmentExpression : LeftHandSideExpression = AssignmentExpression выполняются следующие шаги:

1. Пусть lref будет результатом вычисления LeftHandSideExpression ("Левосторонее выражение").
2. Пусть rref будет результатом вычисления AssignmentExpression.
на 2 шаге и определится в каком окружении находится функция

Сообщение от extrabass4
И можно поподробнее о сборщике мусора желательно с примером и алгоритмом действия.
ссылки на объект закончились, можно удалять
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по учебнику extrabass4 Общие вопросы Javascript 1 12.07.2014 14:57
Вопросы от новичка по сортировке массивов и функциям iiv Ваши сайты и скрипты 3 01.07.2014 11:39
Возникли вопросы по созданию игры на javascript alex510i Общие вопросы Javascript 3 19.09.2013 16:46
Разные вопросы по элементам интерфейса от wmag -_- wmag Элементы интерфейса 12 16.08.2012 11:06