JavaScript: typeof - необхідність або нові можливості

JavaScript: typeof - необхідність або нові можливості

Раніше були дані конкретного типу і був інтерес їх обробляти з метою отримання результату. Панування "нетипових ідей у сфері опису" настало несподівано, але природно. Попереднє оголошення змінної перестало бути обов 'язковим, а зазначення її типу взагалі втратило всякий сенс, у всякому разі до операції, в якій вона бере участь.

Програміст розв 'язав собі руки: абсолютно не обов 'язково оголошувати щось спочатку. Часто тільки до моменту використання буде визначеність, що брати, що робити і як. Що стосується типів, то вони самі по собі "стали значеннями", тобто стали даними, від яких теж щось залежить!


Її ще чи вже немає, ну і що з того

Дуже простий опис змінної "aaa" "і доступний алгоритм її обробки:

var aaa;

if (aaa) {
Res = 'I am!' ;//Я Є!
} else {
Res = 'me no...' ;//мене немає
}

дасть очевидний результат: "мене немає". Це значення функції JavaScript typeof = undefined. Просто описати змінну - "зовсім нічого" не означає. Зрозуміло, коли aaa = 1, ми отримаємо: "Я Є!", але якщо aaa = 0, то буде як і в першому випадку: "мене немає".... Чудова логіка, інший математик, а також простий громадянин, не міг і подумати, що нульове значення має зовсім інший сенс, ніж реальний. Тільки сучасне (нетипове) програмування здатне на такі сміливі ідеї!

Конструкція JavaScript typeof, як і більш інтелігентний вираз if (aaa) {... x...} else {... y...}, має прекрасні споживчі якості і дуже зручна у використанні.

Про особливості кирилиці та латиниці

Професійний програміст завжди віддасть перевагу англійському накресленню символів російської, душевно завдяки тому етапу розвитку програмування, коли на одних просторах кібернетика не була визнана, зате на інших територіях комп 'ютерна справа впевнено пішла в гору. Почали множитися і розвиватися мови програмування, взявши за основу синтаксису 26 букв англійської абетки та комплект інших загальноприйнятих символів.


Найпростішим і природним став машинний код, він був прекрасний, досконалий, але специфічний на кожній архітектурі, а мовами високого рівня ідея переносимості між архітектурами відразу стала актуальною. Це суттєво суперечить поточному моменту: підстав для аналога JavaScript typeof = undefined | string | number | boolean | object | function тоді просто не було. Всі мови були суворо формальні, мали суворий синтаксис і не допускали невизначеності.

Типи, змінні та їх використання

Момент дуже важливий. Типізація та опис змінних - найважливіша складова програми, програміст не може написати працюючий алгоритм, поки не вкладе реальне різноманіття даних у сувору формальну картину змінних, масивів, об 'єктів і функцій.

JavaScript несе в собі всю накопичену за десятиліття функціональну міць, всі його конструкції ідеально відображають сучасні уявлення про синтаксис і доцільні правила укладення в нього семантики.

Питання в тому, коли це слід робити, коли саме потрібно визначити type text, JavaScript typeof функцією. Власне чистих варіантів type text небагато: символ, рядок і число. Однак роль тексту може відігравати і об 'єкт, і навіть масив з конструкцією array.join (), яка з' єднує всі його елементи в єдиний text, тобто в один рядок.

Банальне твердження: всі колом є type text, і JavaScript typeof функція повинна в потрібний час виконати потрібне визначення типу. Це так, але на практиці все виходить інакше. JavaScript typeof object видасть одне і те ж значення у всіх трьох випадках:

var aaa = {};
Res = typeof(aaa);
Res += '/' + typeof window.document;
Res += '/' + typeof(document.forms[0]);

результат: object/object/object


Невизначеність переходить у визначеність

Програмуванню властива особлива динаміка: воно настільки стрімко летить вперед, що шкала руху безперервно розширюється. Рахунок йде на місяці, тижні або дні, а часом навіть на години. У конкретних завданнях динаміка формування алгоритму вирішення настільки стрімка і вимоглива до безперервності, що вихід програміста з робочого стану може відкинути рішення на день, тиждень і більший термін.

Природне рішення JavaScript typeof і практика об 'єктно-орієнтованого програмування, яке в даному синтаксисі дещо відрізняється від сформованого в суміжних сучасних мовах, переносить центр тяжкості на об' єкт. Дуже характерний момент: мова стає конструкцією, що містить семантику, а не набором синтаксичних норм.

Прості типи даних не потребують визначення свого типу, точніше використання JavaScript typeof цілком достатньо. У разі потреби середовище виконання саме дбає про належні перетворення, але щодо об 'єктів JavaScript typeof дає найрозумнішу відповідь: це об 'єкт і проблема його типу - його турбота! Така логіка для класичного уявлення про програмування важко сприймається, але це реальний стан правильних речей.

Турбота об 'єкта - визначити свій тип, проявити свої властивості і виконувати свої методи. Програмування відшліфувало свій синтаксис і з кожним моментом часу переносить центр тяжкості з синтаксису в формовану програмістом семантику: систему його об 'єктів, які виконують вирішення поставленого завдання.