Здравствуйте, Hobbes, Вы писали:
H>Здесь проблема не в том, что нет типов, типы как раз есть. Здесь проблема в неявном преобразовании типов, например оператор минус явно работает с числами, и неявное преобразование строки в число, которое подгоняет типы операндов к тем, которые принимает оператор минус, и есть корень зла. То же самое с плюсом, он определён для строк как конкатенация, поэтому неявное преобразование второго операнда в строку даёт wtf-эффект.
Ну да, слабая типизация во всей красе.
Такое впечатление, что JS сделан так, чтобы программы на нем никогда не падали. Это даже круче VB6, в котором, по крайней мере, надо было
on error resume next писать.
В принципе, подобное и в шарпе прокатит. Но только в редких случаях. И если заменить + на — после строковой переменной, программа свалится. А если между 2 и 3, то отработает.
using System;
public class Program
{
public static void Main()
{
Console.WriteLine(2 + 3 + "a" + 8 + 5);
}
}
А JS в любом случае отработает. Боюсь себе представить, как он себя в более сложными, чем числа, объектами ведет.