Программист Flashcards

asasd (97 cards)

1
Q

Объект

A

структура для хранения данных в виде ключ-значение

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

свойство объекта

A

ключ и значение объекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

метод объекта

A

функция, являющаяся свойством объекта

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

ключ объекта

A

имя, по которому находим свойство

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

значение объекта

A

данные, соответствующие ключу

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

поле объекта

A

ключ без значения

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

массив

A

структура данных, в которой данные хранятся по индексу

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

индекс массива

A

перечисляемые свойства с целочисленными именами

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

библиотека

A

Это полезные функции, ради которых её подключают, плюс временные переменные и вспомогательные функции, которые библиотека использует внутри себя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

модуль

A

это всего лишь функция-обёртка для скрытия переменных, функций…которая тут же выполняется

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Если браузер видит function в основном потоке кода – он считает, что это………….

A

Function Declaration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

для чего нужны скобки перед function

A

оказать, что у нас Function Expression, который по правилам JavaScript можно вызвать «на месте».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

зачем в начале кода находится точка с запятой ;

A

особая «защита от дураков»

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

принцип достижимости (англ. reachability)

A

1.достижимы изначально: значения, ссылки на которые содержатся в стеке вызова, то есть – все локальные переменные и параметры функций, которые в настоящий момент выполняются или находятся в ожидании окончания вложенного вызова.
Все глобальные переменные.
2.Любое другое значение сохраняется в памяти лишь до тех пор, пока доступно из корня по ссылке или цепочке ссылок

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

корень

A

значения гарантированно хранящиеся в памяти - ссылки, переменные….«значение остаётся в памяти, пока на него есть хотя бы одна ссылка»

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Результат?
var obj = {
weight: 10
};

with(obj) {
weight = 20;
size = 35;
}

alert( obj.size );
alert( window.size );

A

undefined
35

В строке (2) присваивается свойство, отсутствующее в obj. В результате интерпретатор, не найдя его, создает новую глобальную переменную window.size.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

правило потери контекста

A

любая операция над результатом операции получения свойства, кроме вызова, приводит к потере контекста

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

куча

A

динамически распределяемая память

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

контекст вызова

A

доп. инфрмация, которая нужна для правильной отработки функции

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Переменная состоит из….

A

Переменная состоит из имени и выделенной области памяти, которая ему соответствует.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Имена переменных

A

Имя может состоять из: букв, цифр, символов $ и _

Первый символ не должен быть цифрой.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Константа – это

A

Константа – это переменная, которая никогда не меняется. Как правило, их называют большими буквами, через подчёркивание. Например:

var COLOR_RED = “#F00”;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Правильный выбор имени переменной

A

Никакого транслита. Только английский.

Имя переменной должно максимально чётко соответствовать хранимым в ней данным.

Переменные из нескольких слов пишутся вместеВотТак

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Шесть типов данных, typeof

A
Число «number»
Строка «string»
Булевый (логический) тип «boolean»
Специальное значение «null»
Специальное значение «undefined»
Объекты «object»
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Операнд
Операнд – то, к чему применяется оператор. Например: 5 * 2 – оператор умножения с левым и правым операндами. Другое название: «аргумент оператора».
26
Унарным называется оператор...
Унарным называется оператор, который применяется к одному операнду. Например, оператор унарный минус "-" меняет знак числа на противоположный:
27
Бинарным называется оператор...
Бинарным называется оператор, который применяется к двум операндам. Тот же минус существует и в бинарной форме: ``` var x = 1, y = 3; alert( y - x ); // 2, бинарный минус ```
28
Приоритет
В том случае, если в выражении есть несколько операторов – порядок их выполнения определяется приоритетом.
29
Инкремент
++ увеличивает на 1 | i++ (называется «постфиксная форма») или ++i («префиксная форма»)
30
Декремент
-- уменьшает на 1
31
Код 5++ даст ошибку?
Инкремент/декремент можно применить только к переменной.
32
alert( 'а' > 'Я' )
В кодировке Unicode обычно код у строчной буквы больше, чем у прописной.
33
числовое преобразование
alert( '2' > 1 ); // true, сравнивается как 2 > 1 alert( '01' == 1 ); // true, сравнивается как 1 == 1 alert( false == 0 ); // true, false становится числом 0 alert( true == 1 ); // true, так как true становится числом 1.
34
alert( 0 == false )
true
35
alert( '' == false );
true
36
Сравнение с null и undefined
Значения null и undefined равны == друг другу и не равны чему бы то ни было ещё. Это жёсткое правило буквально прописано в спецификации языка. При преобразовании в число null становится 0, а undefined становится NaN.
37
alert( null > 0 );
false
38
alert( null == 0 );
false
39
alert(null >= 0);
true
40
Несравнимый undefined
alert( undefined > 0 ); // false (1) alert( undefined < 0 ); // false (2) alert( undefined == 0 ); // false (3) Сравнения (1) и (2) дают false потому, что undefined при преобразовании к числу даёт NaN. А значение NaN по стандарту устроено так, что сравнения ==, , <=, >= и даже === с ним возвращают false. Проверка равенства (3) даёт false, потому что в стандарте явно прописано, что undefined равно лишь null или себе и ничему другому.
41
parseInt()
parseInt(string, radix); | принимает СТРОКУ в качестве аргумента и возвращает целое ЧИСЛО в соответствии с указанным основанием системы счисления.
42
toString()
Метод toString() возвращает строку, представляющую объект. Convert a number to a string: var num = 15; var n = num.toString();
43
prompt возвращает
Вызов prompt возвращает то, что ввёл посетитель – строку или специальное значение null, если ввод отменён.
44
модальным окно
Слово «модальное» означает, что посетитель не может взаимодействовать со страницей, нажимать другие кнопки и т.п., пока не разберётся с окном.
45
confirm
Результатом будет true при нажатии OK и false – при CANCEL(Esc).
46
Оператор if (...) вычисляет и преобразует выражение в скобках к...
к логическому типу.
47
короткий цикл вычисления
Допустим, вычисляются несколько ИЛИ подряд: a || b || c || .... Если первый аргумент – true, то результат заведомо будет true (хотя бы одно из значений – true), и остальные значения игнорируются!!!
48
короткий цикл вычисления - 2
|| запинается на «правде», | && запинается на «лжи».
49
Приоритет у && ... ||
Приоритет у && больше, чем у ||
50
Действия !:
Сначала приводит аргумент к логическому типу true/false. | Затем возвращает противоположное значение.
51
Преобразование типов для примитивов
Строковое преобразование. Численное преобразование. Преобразование к логическому значению.
52
Строковое преобразование
Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, его производит функция alert. var a = true; alert( a ); // "true" Можно также осуществить преобразование явным вызовом String(val): alert( String(null) === "null" ); // true
53
alert( true + "test" ); alert( "123" + undefined ); alert( String(null) === "null" );
alert( true + "test" ); // "truetest" alert( "123" + undefined ); // "123undefined" alert( String(null) === "null" ); // true
54
Численное преобразование когда происходит
Численное преобразование происходит в математических функциях и выражениях, а также при сравнении данных различных типов (кроме сравнений ===, !==). можно вызвать Number(val), либо, что короче, поставить перед выражением унарный плюс "+"
55
``` Численное преобразование : undefined null true / false Строка ```
undefined NaN null 0 true / false 1 / 0 Строка Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то 0, иначе из непустой строки "считывается" число, при ошибке результат NaN.
56
alert( +" \n 123 \n \n" )
``` // после обрезания пробельных символов останется "123" alert( +" \n 123 \n \n" ); // 123 ```
57
alert( null >= 0 ); alert( null > 0 ); alert( null == 0 );
alert( null >= 0 ); // true, т.к. null преобразуется к 0 alert( null > 0 ); // false (не больше), т.к. null преобразуется к 0 alert( null == 0 ); // false (и не равен!), т.к. == рассматривает null особо.
58
alert( undefined > 0 ); alert( undefined == 0 ); alert( undefined < 0 );
alert( undefined > 0 ); // false, т.к. undefined -> NaN alert( undefined == 0 ); // false, т.к. это undefined (без преобразования) alert( undefined < 0 ); // false, т.к. undefined -> NaN
59
Логическое преобразование
Преобразование к true/false происходит в логическом контексте, таком как if(value), и при применении логических операторов. Все значения, которые интуитивно «пусты», становятся false. Их несколько: 0, пустая строка, null, undefined и NaN. Остальное, в том числе и любые объекты – true.
60
``` Логическое преобразование undefined, null Числа Строки Объекты -------------------------- строка "0" любые непустые строки, даже из пробелов ```
undefined, null false Числа Все true, кроме 0, NaN -- false. Строки Все true, кроме пустой строки "" -- false Объекты Всегда true строка "0" строка "0" становится true любые непустые строки, даже из пробелов - true!
61
break
Прерывание цикла
62
continue
Директива continue прекращает выполнение текущей итерации цикла.
63
Метки для break/continue
Метка имеет вид "имя:", имя должно быть уникальным. Она ставится перед циклом
64
тело функции
код, который выполняется при её вызове.
65
главная цель создания функций
избавление от дублирования кода.
66
локальные переменные
переменные, объявленные через var. Такие переменные видны только внутри функции Блоки if/else, switch, for, while, do..while не влияют на область видимости переменных.
67
глобальными переменными
Переменные, объявленные на уровне всего скрипта, называют «глобальными переменными».
68
неявное объявление глобальных переменных
забыл поставить var
69
Параметры функции.
Параметры копируются в локальные переменные функции.
70
Если аргументов передано больше, чем надо....
то ошибки не будет
71
Значение функции без return и с пустым return
Обратите внимание, никакой ошибки нет. Просто возвращается undefined.
72
Сравнение разных типов(число и строка)
Сравнение разных типов – значит численное преобразование: alert( "\n0 " == 0 ); // true
73
undefined и NULL
undefined: используется JavaScript и означает "no value". Неинициализированные переменные, отсутствующие параметры и неизвестные переменные имеют это значение. null: используется программистами для указания "нет значения"
74
Для явного логического преобразования ...
Для явного преобразования используется двойное логическое отрицание !!value или вызов Boolean(value).
75
undefined + 1
undefined при численном преобразовании становится NaN
76
null == "\n0\n"
При сравнении == с null преобразования не происходит, есть жёсткое правило: null == undefined и только.
77
+null == +"\n0\n"
И левая и правая часть == преобразуются к числу 0.
78
alert( Infinity > 1234567890 ); alert( Infinity + 5 == Infinity ); alert( isFinite(Infinity) );
``` Infinity больше любого числа. Добавление к бесконечности не меняет её. alert( Infinity > 1234567890 ); // true alert( Infinity + 5 == Infinity ); // true alert( isFinite(Infinity) ); // false ```
79
NaN
Если математическая операция не может быть совершена, то возвращается специальное значение NaN (Not-A-Number). Например, деление 0/0 в математическом смысле неопределено, поэтому его результат NaN Значение NaN – единственное в своем роде, которое не равно ничему, включая себя
80
isFinite(n)
Функция isFinite(n) преобразует аргумент к числу и возвращает true, если это не NaN/Infinity/-Infinity: alert( isFinite(1) ); // true alert( isFinite(Infinity) ); // false alert( isFinite(NaN) ); // false
81
alert( +"12test" );
alert( +"12test" ); // NaN
82
alert( parseInt('12px') ) ; alert( parseFloat('12.3.4') ); alert( parseInt('a123') ); alert( parseInt('FF', 16) );
alert( parseInt('12px') ) // 12, ошибка на символе 'p' alert( parseFloat('12.3.4') ) // 12.3, ошибка на второй точке alert( parseInt('a123') ); // NaN alert( parseInt('FF', 16) ); // 255, parseInt также позволяет указать систему счисления
83
isNaN(str)
Она преобразует строку в число аналогично +, а затем вернёт true, если это NaN, то есть если преобразование не удалось. Пустая строка и строка из пробельных символов преобразуются к 0, поэтому считаются числами. isNaN посчитает числами значения false, true, null, так как они хотя и не числа, но преобразуются к ним.
84
точная проверка на число
``` function isNumber(str) { if (typeof str != "string") return false // we only process strings! // could also coerce to string: str = ""+str return !isNaN(str) && !isNaN(parseFloat(str)) } ```
85
Math.floor Math.ceil Math.round
alert( Math.floor(3.1) ); // 3 alert( Math.ceil(3.1) ); // 4 alert( Math.round(3.1) ); // 3 Вариант округления через Math.round по общепринятым правилам 5 округляется вверх
86
alert( 0.1 + 0.2 > 0.3 ); // true
Всё дело в том, что в стандарте IEEE 754 на число выделяется ровно 8 байт(=64 бита), не больше и не меньше. Число 0.1 (одна десятая) записывается просто в десятичном формате. Но в двоичной системе счисления это бесконечная дробь, так как единица на десять в двоичной системе так просто не делится. Также бесконечной дробью является 0.2 (=2/10). Двоичное значение бесконечных дробей хранится только до определенного знака, поэтому возникает неточность.
87
почему работает alert( (0.1 * 10 + 0.2 * 10) / 10 ); // 0.3
Это работает, так как числа 0.1*10 = 1 и 0.2*10 = 2 могут быть точно представлены в двоичной системе.
88
операции, при которых объект должен быть преобразован в примитив
Строковое преобразование – если объект выводится через alert(obj). // [object Object] alert( [1, 2] ); // toString для массивов выводит список элементов "1,2" alert( new Date ); // toString для дат выводит дату в виде строки alert( function() {} ); // toString для функции выводит её код Численное преобразование – при арифметических операциях, сравнении с примитивом. У большинства встроенных объектов такого valueOf нет(кроме объекта Date. У объектов Date есть и valueOf – возвращает количество миллисекунд, и toString – возвращает строку с датой. …Но оператор + для Date использует именно toString (хотя должен бы valueOf).), поэтому численное и строковое преобразования для них работают одинаково. ``` Логическое преобразование – при if(obj) и других логических операциях. //Любой объект в логическом контексте – true, даже если это пустой массив [] или объект {} ```
89
{}[0] // чему равно? | {} + {} // а так?
{}[0] // то же что и: [0] | {} + {} // то же что и: + {}
90
Почему результат true ? alert( ['x'] == 'x' );
В данном случае сравнение означает численное приведение. У массивов нет valueOf, поэтому вызывается toString, который возвращает список элементов через запятую. В данном случае, элемент только один – он и возвращается. Так что ['x'] становится 'x'. Получилось 'x' == 'x', верно. P.S. По той же причине верны равенства: alert( ['x', 'y'] == 'x,y' ); // true alert( [] == '' ); // true
91
Конструктор
Конструктором становится любая функция, вызванная через new.
92
``` function Animal(name) { this.name = name; this.canWalk = true; } ``` ``` var animal = new Animal("ёжик"); функция, запущенная через new, делает следующее: ```
``` Создаётся новый пустой объект. Ключевое слово this получает ссылку на этот объект. Функция выполняется. Как правило, она модифицирует this (т.е. этот новый объект), добавляет методы, свойства. Возвращается this. получаем такой объект: animal = { name: "ёжик", canWalk: true } ```
93
Если свойства объекту создаются вручную, то его дискриптор
``` // writable – true. // configurable – true, // enumerable – true ```
94
Если свойства объекту создаются через Object.defineProperty, то его дискриптор:
``` // writable – false. // configurable – false, // enumerable – false ```
95
статические методы, свойства
Методы и свойства, которые не привязаны к конкретному экземпляру объекта, называют «статическими». Их записывают прямо в саму функцию-конструктор.
96
Дескриптор
объект, который описывает поведение свойства.
97
Метод call
func.call(context, arg1, arg2, ...) При этом вызывается функция func, первый аргумент call становится её this, а остальные передаются «как есть». Call вызывает функцию с контекстом и аргументом