LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   if(condition2) {
  //     return a
  //   }
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition2.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исправление AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   if(condition2) {
  //     return a
  //   }
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition2.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исправление AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   if(condition2) {
  //     return a
  //   }
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition2.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исправление AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   if(condition 2) {
  //     return a
  //   }
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition2.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исправление AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   if(condition 2) {
  //     return a
  //   }
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исправление AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   return a
  // }

  return a
}
Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Выходит, обязательно, если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести (как мне не делает чести переход на личности в случае с Vit).

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.

Исходная версия AndreyKl, :

Так или иначе, твой аргумент про то что «не надо вводить», это гм, не совсем корректно.

Вот гляди,

var a = 2
function getA() {
  // var a = 3

  // if(condition) {
  //   var a = 4
  //   
  //   return a
  // }

  return a
}


Если раскомментировать первую строку в функции, то вернётся 3, а иначе возвращается 2.

Т.е. очевидно, что появляется новая переменная, локальная для скоупа. Сколько бы ты ни пытался меня убедить что «объявлять не обязательно», и прочие странные вещи, но по факту, — если ты хочешь локальную переменную, ты обязан её объявить (если это не аргумент функции).

До сих пор поведение логично и отвечает ожиданиям.

Попутно вопрос, если «объявлять не обязательно», то будешь заводить новую локальную переменную если её не объявишь? Обязательно если хочешь завести. Вот в пхп - не обязятельно, действительно. Там, как ты верно заметил, наоборот, чтобы воспользоваться глобальной переменной надо сначала сказать об этом.

Но в яваскрипте фокус в том что если раскоментировать блок if, то функция вернёт четыре. Вне зависимости от condition.

Т.е. в первый раз var создало новую переменную, а во второй - не создало. Это поведение противоречиво.

Повторюсь, что логично было бы, даже для того скоупа что есть выдавать ошибку при повторной декларации (области видимости). Меня бы это устроило и я бы не считал это ошибкой дизайна.

Но то что есть - просто непродумано да и всё. Я верю что когда то так было и в других языках. Я этого не знал, пока выше не привели пример с си. Но сегодня, те языки что пережили это «когда то» уже изжили это (по крайней мере тот же си, может действительно экзотика которую не используют массово для написания чего то более-менее крупного ещё тащит). Остальные никогда не имели, потому что их авторы были чуть дальновиднее и грамотнее. Причём сегодня очевидно, что так делать не стоит. Яваскрипт всё ещё тащит это.

Поэтому когда вы с Vit'ом и ещё парочкой фанатиков дурно пахнущей субстанции на голубом глазу утверждаете что дело в том что я чего то не знаю, это выглядит весьма странно.

И да, я сразу сказал что я знаю о том как оно себя ведёт. Но когда пишешь - бывает забываешь, из за того что пишешь не только на яваскрипте. И да, линтер бы подсветил. Но оно всё ещё так как есть и даже ворнингов не выдаёт. За что мы и любим яваскрипт, как я и сказал.

То что вы отрицаете очевидное, не делает вам чести.

Ну, а то что яваскрипт мы любим совсем не только за это, это вопрос сильно спорный, поэтому я в топике о нём не писал. Мне нравятся языки с хорошо продуманными системами типов, которые позволяют избавиться от многих классов ошибок. При этом на мой взгляд все «преимущества» динамических языков и языков с простыми системами типов (кроме ассемблера, си) быстро сходят на нет с объёма кода и такие языки представляют только проблемы по сравнению с современными решениями. Более наивные люди любят «гибкость» динамических языков. Ну бог им судья, тема была не об этом.