Типова проблема, що виникає для конкатенації рядків, обертається навколо кількох питань:
+
символ перевантаження
- прості помилки
- програмісти лінуються
№1
Перше і головне питання використання +
для об'єднання рядків і додавання рядків - це те, що ви використовуєте +
для об'єднання і додавання рядків .
якщо у вас є змінні a
та b
, і ви встановили c = a + b
, існує неоднозначність, залежна від типів a
і b
. Ця неоднозначність змушує вас вжити додаткових заходів для пом’якшення проблеми:
Рядок Concat:
c = '' + a + b;
Доповнення:
c = parseFloat(a) + parseFloat(b);
Це підводить мене до мого другого моменту
№2
Дуже легко випадково відкинути змінну до рядка, не усвідомлюючи її. Також легко забути, що ваш внесок надходить як рядок:
a = prompt('Pick a number');
b = prompt('Pick a second number');
alert( a + b );
Дасть неінтуїтивні результати, тому що підказка повертає рядкове значення вхідного даних.
№3
Потреба вводити parseFloat
або Number()
щоразу, коли я хочу робити доповнення, є втомливою і дратівливою. Я вважаю себе досить розумним, щоб пам'ятати, щоб не зіпсувати свої динамічні типи, але це не означає, що я ніколи не псував свої динамічні типи . Правда полягає в тому, що я занадто лінивий набирати текст parseFloat
або Number()
кожен раз робити доповнення, тому що я роблю багато доповнень.
Рішення?
Не всі мови використовують +
для об'єднання рядків. PHP використовує .
для об'єднання рядків, що допомагає розрізняти, коли ви хочете додати числа, і коли ви хочете приєднати рядки.
Будь-який символ може бути використаний для об'єднання рядків, але більшість з них вже використовується, і найкраще уникати дублювання. Якби я мав свій шлях, я, ймовірно, використовував би _
для з'єднання рядків і заборонив ім'я _
змінних.
bad
. Хто єEveryone
?