Ответ на пост «Что-то на джаваскриптерском»1
Эта проблема в Javascript (ECMAScript) не решена до сих пор. Странно, почему не введут отдельный оператор конкатенации строк - есть же свободный символ @, сочетания символов <>, <->, можно предусмотреть языковые конструкции типа "conc", "cc" и подобные.
Например
let strtext = "abc" <> "def" <> 123; // abcdef123
strtext = "abc" cc "def" cc 123;
let sum = 1 + "4"; // 5
И ещё в Javascript следует предусмотреть низкоуровневые ошибки, которые выводят сообщения в консоль и окно браузера, но не останавливают выполнение скриптов. К такие можно отнести Notice, Warning и Deprecated, как в PHP. Как минимум - Deprecated ошибки необходимы.
Например, нужно ввести новый оператор конкатенации строк и старый вариант объявить устаревшим, а потом удалить:
console.log("abc" <> "def"); // abcdef;
console.log("abc" + "def"); // Deprecated: Using '+' for concat strings is deprecated, use '<>' in... abcdef
console.log("abc" * 2); // Warning: A non-numeric value encountered in... NaN
console.log("10" * 2); // Notice: A non well formed numeric value encountered, use '+', 'papseInt' or 'parseFloat' in... 20
То есть, Notice генерируется, если строку можно преобразовать в число, и Warning - в противном случае.
Такие сообщения нужны при неправильных математических операциях:
console.log(25 / 0); Notice: Division by zero in... Infinity
console.log(Math.sqrt(-25)); Notice: Trying to calculate the root of an even power from a negative number in... NaN
(последнюю ошибку предполагается убрать, если в Javascript введут комплексные и мнимые числа)
При недостаче или избытке аргументов функций:
function doSomething(a, b, c) {
console.log("A'm function!");
}
doSomething(1, 2); // Warning: Too few arguments: function 'doSomething' expects 3 parameters, 2 present in...
doSomething(1, 2, 3, "a", false); Notice: Too many arguments: function 'doSomething' expects at most 3 parameters, 5 present in...
Есть ещё интересное предложение: оператор приблизительного сравнения (или неравенства):
~= ? (!~= ?)
Принимает три параметра: два числа и разброс - число или строка с числом в процентах от "0%" до "100%":
console.log(25 ~= 27 ? 2); // true
console.log(10 ~= 20 ? 5); // false
В случае с приблизительным сравнением строк
console.log("string" ~= "strong" ? "20%"); // true
В случае некорректных входных данных возвращать null и выводить предупреждение.






