diff --git a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md index 732dfefa5..ad4eac6a9 100644 --- a/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md +++ b/1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md @@ -9,23 +9,18 @@ str.test = 5; // (*) alert(str.test); ``` -Ви можете отримати два результати: -1. `undefined` -2. помилку. +В залежності від того, втановлений у вас `use strict` чи ні, результати будуть наступними: +1. `undefined` (без строгого режиму) +2. Помилка (строгий режим) -Чому? Давайте повторимо те, що відбувається в рядку `(*)`: +Чому? Давайте повторимо те, що відбувається в рядку, який позначено `(*)`: 1. Коли ми намагаємося отримати доступ до `str`, створюється "об'єкт обгортка". -2. Операція з властивістю здійснюється в ній. Отже, об'єкт отримує властивість `test`. -3. Операція закінчується, і "об'єкт обгортка" зникає. - -Отже, на останньому рядку `str` не має властивості. Для кожної операції створюється новий об'єкт обгортка. - -Деякі браузери можуть вирішити додатково обмежити програміста і взагалі заборонити присвоювати властивості примітивам. Тому на практиці ми можемо бачити помилки в рядку `(*)`. Але це трохи відрізняється від специфікації. +2. В строгому режимі, спроба запису викличе помилку. +3. В іншому випадку операція здійсниться і об'єкт отримає властивість `test`, але після цього "об'єкт обгортка" зникне. +Отже, якщо код виконується не в строгому режимі, на останньому рядку `str` не матиме властивості `test`. **Цей приклад чітко показує, що примітиви не є об'єктами.** -Вони просто не можуть зберігати дані. - -Всі операції з властивостями/методами виконуються за допомогою тимчасових об'єктів. +Вони не можуть зберігати додаткові данні. diff --git a/1-js/05-data-types/01-primitives-methods/article.md b/1-js/05-data-types/01-primitives-methods/article.md index fbd919431..cf3ae1d3d 100644 --- a/1-js/05-data-types/01-primitives-methods/article.md +++ b/1-js/05-data-types/01-primitives-methods/article.md @@ -14,7 +14,7 @@ JavaScript дозволяє працювати з примітивами (ряд Об'єкт - можна зберігати декілька значень як властивості. -- може бути створений за допомогою `{}`, наприклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти; функції - це теж об'єкти. +- може бути створений за допомогою `{}`, наприклад: `{name: "John", age: 30}`. В JavaScript існують й інші об'єкти: функції - це теж об'єкти. Одна з цікавих речей щодо об'єктів полягає в тому, що ми можемо зберігати функцію як одну з його властивостей. @@ -48,7 +48,7 @@ john.sayHi(); // Привіт друже! 1. Примітиви залишаються примітивами. Лише значення, як хотіли. 2. JavaScript дозволяє отримати доступ до методів та властивостей рядків, чисел, булеанів та символів. -3. Коли це трапляється, створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. +3. Для цього створюється спеціальний "об'єкт обгортка" з додатковою функціональністю, та потім він знищується. Для кожного примітиву створюється своя "обгортка": `String`, `Number`, `Boolean` та `Symbol`. Отже, вони містять різні набори методів. @@ -91,18 +91,18 @@ alert( n.toFixed(2) ); // 1.23 Наприклад: ```js run -alert( typeof 1 ); // "number" +alert( typeof 0 ); // "number" -alert( typeof new Number(1) ); // "object"! +alert( typeof new Number(0) ); // "object"! ``` -та завдяки тому що `zero` об'єкт, ми побачимо алерт: +Об'єкти завжди повертають `true` в `if`, отже ми побачимо алерт: ```js run let zero = new Number(0); if (zero) { // zero є true, тому що це об'єкт - alert( "zero є true?!?" ); + alert( "zero є true!?!" ); } ``` pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy