Как свободно типизированный язык знает, как обрабатывать разные типы данных?
Вчера я работал над простой задачей, мне просто нужно было суммировать значения в нескольких выпадающих меню для отображения в текстовом поле через Javascript. Неожиданно, это было просто создание строки, поэтому вместо того, чтобы дать мне значение 4, это дало мне "1111". Я понимаю, что происходит; но я не понимаю как.
С помощью свободно типизированного языка, такого как Javascript или PHP, как компьютер "узнает", к какому типу относиться к чему-либо? Если я просто наберу все как var
Как он отличает строку от int от объекта?
1 ответ
Что за +
Оператор делает в Javascript определяется во время выполнения, когда оба фактических аргумента (и их типы) известны.
Если среда выполнения видит, что один из аргументов является строкой, она выполняет конкатенацию строк. В противном случае будет выполнено сложение чисел (при необходимости приведение аргументов в числа).
Эта логика закодирована в реализации +
оператор (или любая другая функция, как это). Если вы посмотрите на это, вы увидите if typeof(a) === 'string'
заявления (или что-то очень похожее) там.
Если я просто наберу все как var
Ну, вы не печатаете это вообще. У переменной нет типа, но любое действительное значение, которое заканчивается в этой переменной, имеет тип, и код может проверить это.