You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Чтобы получить символ по определенному индексу в строке, вы можете использовать скобочную нотацию. Первый символ в строке имеет индекс 0 и т.д. В этом случае мы хотим получить элемент с индексом 0, символ `'I'`, который выводится в лог.
2751
+
2752
+
Обратите внимание, что этот метод не поддерживается в IE7 и ниже. В этом случае используйте `.charAt()`
2753
+
2754
+
</p>
2755
+
</details>
2756
+
2757
+
---
2758
+
2759
+
###### 88. Какой будет вывод?
2760
+
2761
+
```javascript
2762
+
functionsum(num1, num2=num1) {
2763
+
console.log(num1 + num2)
2764
+
}
2765
+
2766
+
sum(10)
2767
+
```
2768
+
2769
+
- A: `NaN`
2770
+
- B: `20`
2771
+
- C: `ReferenceError`
2772
+
- D: `undefined`
2773
+
2774
+
<details><summary><b>Ответ</b></summary>
2775
+
<p>
2776
+
2777
+
#### Ответ: B
2778
+
2779
+
Вы можете установить значение параметра по умолчанию равным другому параметру функции, если они были определены _до_ параметров по умолчанию. Мы передаем значение `10` в функцию `sum`. Если функция `sum` принимает только один аргумент, это означает, что значение для `num2` не передано, и в этом случае значение `num1` равно переданному значению `10`. Значением по умолчанию `num2` является значение `num1`, которое равно `10`. `num1 + num2` возвращает `20`.
2780
+
2781
+
Если вы пытаетесь установить значение параметра по умолчанию равным параметру, который определен _после_ (справа), то значение параметра еще не было инициализировано; это приведет к ошибке.
2782
+
2783
+
</p>
2784
+
</details>
2785
+
2786
+
---
2787
+
2788
+
###### 89. Какой будет вывод?
2789
+
2790
+
```javascript
2791
+
// module.js
2792
+
exportdefault () =>"Hello world"
2793
+
exportconstname="Lydia"
2794
+
2795
+
// index.js
2796
+
import*asdatafrom"./module"
2797
+
2798
+
console.log(data)
2799
+
```
2800
+
2801
+
- A: `{ default: function default(), name: "Lydia" }`
2802
+
- B: `{ default: function default() }`
2803
+
- C: `{ default: "Hello world", name: "Lydia" }`
2804
+
- D: Global object of `module.js`
2805
+
2806
+
<details><summary><b>Ответ</b></summary>
2807
+
<p>
2808
+
2809
+
#### Ответ: A
2810
+
2811
+
С синтаксисом `import * as name` мы импортируем _все exports_ из файла `module.js` в файл `index.js`, тогда и создается новый объект с именем `data`. В файле `module.js` есть два экспорта: экспорт по умолчанию и именованный экспорт. Экспорт по умолчанию - это функция, которая возвращает строку `"Hello World"`, а именованный экспорт - это переменная с именем `name`, которая имеет значение строки `"Lydia"`.
2812
+
2813
+
Объект `data` имеет свойство `default` для экспорта по умолчанию, другие свойства имеют имена именованных экспортов и их соответствующие значения.
2814
+
2815
+
</p>
2816
+
</details>
2817
+
2818
+
---
2819
+
2820
+
###### 90. Какой будет вывод?
2821
+
2822
+
```javascript
2823
+
classPerson {
2824
+
constructor(name) {
2825
+
this.name= name
2826
+
}
2827
+
}
2828
+
2829
+
constmember=newPerson("John")
2830
+
console.log(typeof member)
2831
+
```
2832
+
2833
+
- A: `"class"`
2834
+
- B: `"function"`
2835
+
- C: `"object"`
2836
+
- D: `"string"`
2837
+
2838
+
<details><summary><b>Ответ</b></summary>
2839
+
<p>
2840
+
2841
+
#### Ответ: C
2842
+
2843
+
Классы являются синтаксическим сахаром для конструкторов функций. Эквивалентом класса `Person` в качестве конструктора функции будет:
2844
+
2845
+
```javascript
2846
+
functionPerson() {
2847
+
this.name= name
2848
+
}
2849
+
```
2850
+
2851
+
Вызов конструктора функции с `new` приводит к созданию экземпляра `Person`, ключевое слово `typeof` возвращает `"object"` для экземпляра. `typeof member` возвращает `"объект"`.
2852
+
2853
+
</p>
2854
+
</details>
2855
+
2856
+
---
2857
+
2858
+
###### 91. Какой будет вывод?
2859
+
2860
+
```javascript
2861
+
let newList = [1, 2, 3].push(4)
2862
+
2863
+
console.log(newList.push(5))
2864
+
```
2865
+
2866
+
- A: `[1, 2, 3, 4, 5]`
2867
+
- B: `[1, 2, 3, 5]`
2868
+
- C: `[1, 2, 3, 4]`
2869
+
- D: `Error`
2870
+
2871
+
<details><summary><b>Ответ</b></summary>
2872
+
<p>
2873
+
2874
+
#### Ответ: D
2875
+
2876
+
Метод `.push` возвращает _новую длину_ массива, а не сам массив! Устанавливая `newList` равным `[1, 2, 3].push(4)`, мы устанавливаем `newList` равным новой длине массива: `4`.
2877
+
2878
+
Затем мы пытаемся использовать метод `.push` для `newList`. Поскольку `newList` является числовым значением `4`, мы не можем использовать метод `.push`: выдается ошибка TypeError.
2879
+
2880
+
</p>
2881
+
</details>
2882
+
2883
+
---
2884
+
2885
+
###### 92. Какой будет вывод?
2886
+
2887
+
```javascript
2888
+
functiongiveLydiaPizza() {
2889
+
return"Here is pizza!"
2890
+
}
2891
+
2892
+
constgiveLydiaChocolate= () =>"Here's chocolate... now go hit the gym already."
2893
+
2894
+
console.log(giveLydiaPizza.prototype)
2895
+
console.log(giveLydiaChocolate.prototype)
2896
+
```
2897
+
2898
+
- A: `{ constructor: ...}``{ constructor: ...}`
2899
+
- B: `{}``{ constructor: ...}`
2900
+
- C: `{ constructor: ...}``{}`
2901
+
- D: `{ constructor: ...}``undefined`
2902
+
2903
+
<details><summary><b>Ответ</b></summary>
2904
+
<p>
2905
+
2906
+
#### Ответ: D
2907
+
2908
+
Обычные функции, такие как функция `giveLydiaPizza`, имеют свойство `prototype`, которое является объектом (прототипом объекта) со свойством `constructor`. Однако функции со стрелками, такие как функция `giveLydiaChocolate`, не имеют этого свойства `prototype`. `undefined` возвращается при попытке доступа к свойству `prototype` с использованием `giveLydiaChocolate.prototype`.
2909
+
2910
+
</p>
2911
+
</details>
2912
+
2913
+
---
2914
+
2915
+
###### 93. Какой будет вывод?
2916
+
2917
+
```javascript
2918
+
constperson= {
2919
+
name:"Lydia",
2920
+
age:21
2921
+
}
2922
+
2923
+
for (const [x, y] ofObject.entries(person)) {
2924
+
console.log(x, y)
2925
+
}
2926
+
```
2927
+
2928
+
- A: `name``Lydia` and `age``21`
2929
+
- B: `["name", "Lydia"]` and `["age", 21]`
2930
+
- C: `["name", "age"]` and `undefined`
2931
+
- D: `Error`
2932
+
2933
+
<details><summary><b>Ответ</b></summary>
2934
+
<p>
2935
+
2936
+
#### Ответ: A
2937
+
2938
+
`Object.entries (person)` возвращает массив вложенных массивов, содержащий ключи и объекты:
2939
+
2940
+
`[ [ 'name', 'Lydia' ], [ 'age', 21 ] ]`
2941
+
2942
+
Используя цикл `for-of`, мы можем перебирать каждый элемент массива, в данном случае подмассивы. Мы можем мгновенно деструктурировать подмассивы в цикле for, используя `const [x, y]`. `x` равен первому элементу в подмассиве, `y` равен второму элементу в подмассиве.
2943
+
2944
+
Первым подмассивом является `[ "name", "Lydia" ]`, где `x` равно `"name"`, и `y` равно `"Lydia"`, которые выводятся в лог.
2945
+
Вторым подмассивом является `[ "age", 21 ]`, где `x` равно `"age"`, и `y` равно `21`, которые выводятся в лог.
`... args` - прочие параметры. Значение прочих параметров - это массив, содержащий все оставшиеся аргументы **и может быть передан только последним**! В этом примере прочие параметры были вторым аргументом. Это невозможно, и это приведет к синтаксической ошибке.
0 commit comments