История изменений
Исправление rtxtxtrx, (текущая версия) :
Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const
и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:
counter = 0
def add():
counter += 1
# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()
Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменная не объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… В PHP еще круче сделано там даже значение скопа выше получить нельзя, ни то что перезаписать его. Те еще больше на спичках-тактах сэкономили. Ну он и быстрее питона, тем более там многопоточности не было, а значит и страшный GIL не мог помешать планам по захвату мира. Про global
я не вспоминаю, потому как и eval
тот предан анафеме и за их использование нужно увольнять. Тут совершенно все иначе работает чем в той же Java
в javascript - более древний prototype-based
Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов
Исправление rtxtxtrx, :
Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const
и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:
counter = 0
def add():
counter += 1
# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()
Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменная не объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… В PHP еще круче сделано там даже значение скопа выше получить нельзя, ни то что перезаписать его. Те еще больше на спичках-тактах сэкономили. Ну он и быстрее питона, тем более там многопоточности не было, а значит и страшный GIL не мог помешать планам по захвату мира. Тут совершенно все иначе работает чем в той же Java
в javascript - более древний prototype-based
Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов
Исправление rtxtxtrx, :
Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const
и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:
counter = 0
def add():
counter += 1
# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()
Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java
в javascript - более древний prototype-based
Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов
Исправление rtxtxtrx, :
Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const
и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:
counter = 0
def add():
counter += 1
# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()
Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводит при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java
в javascript - более древний prototype-based
Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов
Исходная версия rtxtxtrx, :
Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходит из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const
и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:
counter = 0
def add():
counter += 1
# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()
Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводит при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java
в javascript - более древний prototype-based
Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов