WikiProject Вычисления / Программное обеспечение | (Рейтинг C-класса, средней важности) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Википроект JavaScript | (Рейтинг C-класс, высшая важность) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Это страница обсуждения для обсуждения улучшений синтаксиса JavaScript . Это не форум для общего обсуждения темы статьи. |
|
Поиск источников: Google ( книги · новости · ученые · бесплатные изображения · WP refs ) · FENS · JSTOR · NYT · WP Library |
Эта статья по существу дублируется статьей во внешнем издании. Пожалуйста , не отмечайте эту статью как нарушение авторских прав из следующего источника:
|
Следующее утверждение: « операторы else должны быть объединены (т. е. «} else {» , все в одной строке), иначе некоторые браузеры могут неправильно их анализировать », найденное в разделе 5.1, неверно. Я программирую на javascript уже 4 года и никогда не использовал этот стиль программирования. Я еще не заметил каких-либо несовместимостей браузера. Если это утверждение верно, пожалуйста, приведите цитату. - Кикбой 04:07, 24 августа 2006 (UTC)
Я удалил эту часть, потому что это не синтаксис, он не очень полезен или распространен в наше время и так далее. Этот и предыдущий раздел нуждаются в некотором пояснении, так как он длинный и кое-что освещается несколько раз, но сейчас я не готов к этому. Квамаретто 03:19, 20 февраля 2006 г. (UTC)
Я немного удивлен поведением Квамаретто. Он склонен отбрасывать материалы, которые не вписываются в его взгляды на JavaScript. В настоящее время я не уверен, стоит ли мне тратить свое время на вклад в Википедию, если другим так легко навязывать свое предвзятое мнение другим.
В этой статье можно было бы упомянуть литералы функций, литералы регулярных выражений и, возможно, прототипирование объектов. 08:10, 16 августа 2006 г. (UTC)
В статье также отсутствует обсуждение конструкции with(). (Не уверен, квалифицируется ли это как оператор или синтаксис, я думаю, что технически это оператор).
Как насчет дополнительных применений ()
? Например, этот синтаксис, распространенный в современных фреймворках: (function() { ... })();
Ziemkowski 17:20, 12 сентября 2007 г. (UTC)
with()
это оператор для изменения цепочки областей видимости. Я не знаю, можно ли считать это управляющей структурой.()
оператор вызова функции. ()
после функции - это только синтаксис вызова функции. (function() { ... })();
только синтаксис выражения функции и синтаксис вызова функции используются вместе. — LungZeno ( разговор ) 22:45, 27 января 2009 г. (UTC)Это была отличная статья для тех, кому нужен краткий справочник по конкретным различиям между синтаксисом JavaScript и синтаксисом таких языков, как Java и C++, для тех, кто имеет опыт работы с этими языками и работает над небольшим проектом на JavaScript.
Да, большое спасибо автору(ам). Коротко и по делу. — Предыдущий неподписанный комментарий добавлен 84.167.27.253 ( обсуждение ) 19:02, 29 мая 2008 г. (UTC)
Я думаю, что раздел «Разное» можно было бы переписать и, возможно, переименовать в « Синтаксический анализ» или что-то в этом роде. Нам действительно не нужен заголовок третьего уровня для простого предложения «JavaScript чувствителен к регистру». Кроме того, в статью следует добавить зарезервированные слова JavaScript. 209.92.136.131 21:37, 12 декабря 2006 г. (UTC)
Переменные: в нем говорится: «Переменные в стандартном JavaScript не имеют прикрепленного типа, и любое значение может быть сохранено в любой переменной». Но когда переменной присваивается значение, ее тип записывается, т.е. присоединяется. Что-то вроде «Переменная в стандартном JavaScript не имеет фиксированного типа, и любой тип значения может храниться в любой переменной». возможно? Значение 0,1 нельзя хранить точно как число, поэтому «любое значение» может ввести в заблуждение.
Предлагаю перефразировать (слишком запутанно?): Переменные — это варианты типов [ссылка? статьи пока нет], которые могут принимать любое значение из небольшого числа типов [сноска № 1], и которые неявно преобразуются или изменяются по мере необходимости. По сути, любое значение может быть сохранено в любой переменной.
сноска №1: число, строка, объект, логическое значение. Функции являются объектами, поэтому их также можно хранить в переменных]
Переменные (2): в нем говорится: «... [в функции] переменные, используемые без объявления с помощью« var », являются глобальными (могут использоваться всей программой)».
Это требует разъяснения: переменные, объявленные в функции, имеют глобальную область видимости, но не определены до тех пор, пока функция не будет вычислена, а функция не может быть оценена — в глобальной области видимости — до тех пор, пока она не будет объявлена. По сути, нужно объявить перед использованием.
Относительно примера кода: любое использование «двадцати» вызывает ReferenceError до тех пор, пока f не будет объявлен и вызван хотя бы один раз.
Обратите внимание, что функции, объявленные внутри области действия функции, могут быть вызваны внутри этой области до того, как появится исходный текст. Опять же, переменные, объявленные без var во внутренних функциях, не могут использоваться до тех пор, пока функция не будет вызвана.
Числа: в нем говорится: «... они не всегда точно представляют десятичные числа, особенно дроби». Они могут точно представлять все целые числа до 2 53 . Итак, «... они обычно не точно представляют десятичные дроби».
Строки: набор символов в настоящее время не упоминается - поставить «последовательность символов UniCode»? Третий пример может иллюстрировать ' внутри "...", например, \t \n, \u03A3. В MSIE6 и, насколько я помню, в ECMA-262 строки НЕ МОГУТ индексироваться как массивы.
Арифметика: Плюс также является унарным оператором. Это полезно для преобразования строки (или логического значения) в число: Count = +MyForm.Ctrl.value .
Запятая: я не вижу упоминания об этом. Нет примера списка переменных , ничего для поддержки (J=0, K=1; K<4; K++) {} , что, я надеюсь, является законным.
82.163.24.100 16:56, 31 января 2007 г. (UTC)
Я не вижу упоминания метки continue break в связи с циклами. 82.163.24.100 13:36, 29 октября 2007 г. (UTC)
Это действительно хорошо, но я думаю, что было бы неплохо иметь один абзац о многомерных массивах и несколько примеров их объявления и использования, поскольку (по крайней мере, для двух измерений) это очень распространенное использование. — Предыдущий неподписанный комментарий добавлен 167.1.146.100 ( обсуждение ) 12:59, 8 февраля 2008 г. (UTC)
Все браузеры, соответствующие основным стандартам, поддерживают объект __proto__ в Elements, а также __defineGetter__ и __defineSetter__. Возможно, это должно быть включено в документ? — Предыдущий неподписанный комментарий добавлен Yhulkdsfdd ( обсуждение • вклад ) 17:44, 11 сентября 2008 г. (UTC)
Не следует ли пояснить, что следующее:
если ( x == 1 ){ что- то () } еще если ( x == 2 ){ что- то еще (); }
else if работает как сокращение if (без {})
если ( x == 1 ) сделайте что- нибудь здесьтак и есть на самом деле , если ( x == 1 ){ что- то () } else { если ( x == 2 ){ что- то еще (); } }
Извините, если это не имело смысла, мне трудно объяснить.
else { if(...){ } }
и elsif(...){ }
? — Хайфер ( разговор ) 08:38, 20 марта 2011 г. (UTC)Это нужно объяснить. Поскольку остальная часть статьи объясняет все достаточно подробно, это больше похоже на список.
Разделы часто задаваемых вопросов CLJ переупорядочиваются и преобразуются из числовых привязок в текстовые. Когда это будет завершено, следует поискать в Вики такие ссылки для исправления. Я обновил два в этой статье. 82.163.24.100 ( разговор ) 18:34, 12 октября 2008 г. (UTC)
for ( начальное ; конечное условие ; оператор цикла ) { /* операторы будут выполняться каждый раз , когда цикл for{} будет выполняться до тех пор, пока не будет выполнено конечное условие */ }
Условие должно называться while-condition или просто condition , но никогда не end-condition . Как и в любом C-подобном языке, цикл for{} повторяется до тех пор , пока выполняется условие. -- Комо ( разговор ) 14:28, 23 октября 2008 г. (UTC)
Никакого ответа в течение нескольких месяцев... Я полагаю, что все согласны, поэтому я осмелился изменить статью. -- Комо ( разговор ) 09:26, 3 марта 2009 г. (UTC)
for(initial; condition; loopstatement) s;
initial; while(condition){ s; loopstatement; }
— Предыдущий неподписанный комментарий добавлен пользователем 201.124.237.242 ( обсуждение ) 09:05, 25 декабря 2019 г. (UTC)Многое из того, что написано об этом в Интернете, неверно, вводит в заблуждение или слишком запутано в семантике браузера, чтобы быть понятным. Поэтому я добавил краткие, нетривиальные примеры, которые подчеркивают проблемы. Я немного научился в процессе. Все образцы проверены.
Я надеюсь, что другие найдут это полезным, особенно те, кто пришел из других ОО-языков, которые сильно отличаются.
Статью, вероятно, следует переименовать во что-то вроде «Язык JavaScript», а не «Синтаксис». Синтаксис без семантики бесполезен. Но я думаю, что на данный момент содержание достаточно хорошее — краткий обзор.
Логика прототипирования JavaScript довольно странная ИМХО. Ссылки на классический Lisp IS-A подойдут. Но в JavaScript его путают с мышлением C++. MyFunction.prototype совершенно неверен - это должно быть просто this.prototype = parent. Не нужно магии. Tuntable ( разговор ) 07:47, 3 февраля 2009 г. (UTC)
В статье говорится, что For...In нельзя использовать с массивами, но веб-сайт W3Schools дает массивы в качестве примера использования For...In: http://www.w3schools.com/js/js_loop_for_in.asp и Microsoft Developer Network специально заявляет, что For...In можно использовать для «прохода через… все элементы массива», не предупреждая о неожиданных результатах. (Правда, это относится к JScript, а не к JavaScript, и я не понимаю отношения между ними.) http://msdn.microsoft.com/en-us/library/kw1tezhk(VS.85).aspx FrankSier ( разговор ) 15:44, 6 февраля 2009 г. (UTC)
Метод toFixed не следует рекомендовать для Интернета, потому что он ненадежен в MS IE 7, и я думаю, что все предыдущие версии IE, в которых он был - 0.07.toFixed(1) дает 0.0 . Алгоритм StrU , который сейчас находится на http://www.merlyn.demon.co.uk/js-rndg1.htm#GC , не содержит известных ошибок. 82.163.24.100 ( разговор ) 18:44, 3 апреля 2009 г. (UTC)
Internet Explorer использует JScript, а не JavaScript, он работает со всеми браузерами JavaScript. 72.152.120.17 ( разговор ) 19:10, 4 марта 2011 г. (UTC)
Есть ли причина, по которой в примерах используется println вместо alert? Мне нравится JavaScript на клиенте и сервере, и я каждый день кодирую на нем (помогает оплачивать счета), но я бы _не_ писал на JavaScript, если бы не вездесущий веб-браузер. Учитывая, что JavaScript был изобретен как язык сценариев браузера, кто-нибудь будет возражать против того, чтобы я заменил println на alert? Я бы также изменил примечание в верхней части страницы, отметив, что предупреждение предполагает, что любой пользователь, который копирует и вставляет примеры, будет работать в браузере. Джеремивосборн ( разговор ) 21:02, 15 апреля 2009 г. (UTC)
Ссылка на «println» заменена на вызовы функций «alert», а также обоснование использования «alert». Джеремивосборн ( разговор ) 01:43, 22 апреля 2009 г. (UTC)
Я часто использую оповещения. Почему println? ElliottBelardo ( разговор ) 21:03, 8 июля 2013 г. (UTC)
Код можно изменить, чтобы также проиллюстрировать тернарный оператор ? : :
вернуть разницу > 0 ? НОД ( сегментB , разн . ) : НОД ( сегментA , -разн . )
Так как код может быть скопирован, было бы неплохо изменить его после тестирования на более эффективный метод, в котором вторым аргументом внутреннего gcd является либо A mod B , либо B mod A , что примерно одинаково легко читается . ; или к чудесной нерекурсивной форме:
function GCD ( U , V ) { // или HCF while ( true ) { if ( ! ( U %= V )) return V if ( ! ( V %= U )) return U } }
И по той же причине следует включить альтернативную аббревиатуру HCF. 82.163.24.100 ( разговор ) 20:01, 24 июля 2009 г. (UTC)
Я дополнил список нативных объектов ссылкой на стандарт.
Страница не должна быть слишком длинной, а подробное описание нативных объектов займет много места. Как насчет новой страницы для объектов JavaScript, где записи на странице синтаксиса будут сжаты примерно до размера первого абзаца о массивах? 82.163.24.100 ( разговор ) 11:51, 26 июля 2009 г. (UTC)
Это мой первый вклад в Википедию. (-: Так что будьте добры ко мне! :-)
Я тоже новичок в JavaScript, хотя занимаюсь компьютерами с 1960-х.
Буду признателен за любые предложения или комментарии по поводу моей попытки вставить описание объекта Math. Место, где это появляется (5.4), похоже, не нуждается в большем, чем это описание, не так ли? Возможно, в другом месте должно быть больше информации об арифметике. EG. Приоритет операторов не обсуждается.
Пример в конце слишком сложен? Я хотел получить несколько разных методов в одной строке кода. - Wogga62 22:55, 15 сентября 2009 г. (UTC) — Предыдущий неподписанный комментарий добавлен Wogga62 ( обсуждение • вклад )
В тексте утверждается, что функция-конструктор, вызываемая при создании экземпляра объекта (т. е. функция, на которую ссылается «новое» выражение), «не запоминается». Это неверно во всех основных браузерах: свойство «конструктор» каждого объекта содержит ссылку на функцию-конструктор. ( Pointym5 ( разговор ) 16:34, 29 декабря 2009 г. (UTC))
Тот факт, что список параметров конструктора является необязательным в «новом» выражении, не обсуждается. ( Pointym5 ( разговор ) 16:41, 29 декабря 2009 г. (UTC))
ГДЕ ПРАВИЛА ДЛЯ ВСЕХ ПРАВОВЫХ, НО СТРАШНЫХ СИМВОЛОВ В ИДЕНТИФИКАТОРАХ? (например, "$", "_" и т. д.) — Предыдущий неподписанный комментарий, добавленный 24.129.93.200 ( обсуждение ) 16:29, 16 сентября 2010 г. (UTC) ( перенесено в новый раздел )
Редактирование Machine Elf — хорошее начало, но оно не совсем точное. Цифры не ограничены 0-9 — любой символ в категории «Десятичное число (Nd)» Unicode считается цифрой. Кроме того, в идентификаторах разрешено использовать гораздо больше символов/категорий. См. http://mathiasbynens.be/notes/javascript-identifiers .Матиас Байненс: «Идентификатор должен начинаться с $, _ или любого символа в категориях Юникода «Заглавная буква (Lu)», «Строчная буква (Ll)», «Заглавная буква (Lt)», «Буква-модификатор (Lm )», «Другая буква (Lo)» или «Номер буквы (Nl)». Остальная часть строки может содержать те же символы, а также любые символы нулевой ширины U+200C, не объединяющие символы, объединяющие символы нулевой ширины U+200D и символы из категорий Unicode «Знак без пробела (Mn)», «Объединение интервалов». знак (Mc)», «Десятичное число цифр (Nd)» или «Пунктуация разъема (Pc)». Здесь также есть инструмент проверки имени переменной JavaScript: http://mothereff.in/js-variables 78.20.165.163 ( talk ) 11:29, 5 марта 2012 г. (UTC)
«Правда» и «Фальси»… не стесняйтесь найти их источники и рассказать о них что-нибудь.— Machine Elf 1735 ( разговор ) 01:09, 5 марта 2011 (UTC)
Я предлагаю отредактировать логический раздел, чтобы он был менее запутанным. Я также предлагаю удалить тернарный оператор из раздела, потому что логический контекст искажается как приведение типов, а это не так. Тернарный (?:) оператор не является примером приведения типов, равно как и оператор отрицания "!". Кроме того, на странице сравниваются выражения, а не значения, так как число выражений бесконечно, все ненужные выражения должны быть удалены из раздела для ясности. 72.152.120.17 ( разговор ) 06:36, 6 марта 2011 г. (UTC)
true==true
и false==false
..., если вы имеете в виду что-то конкретное, поделитесь, пожалуйста, иначе вы ничего не предлагаете в своем вступительном предложении. Я думаю, что это намного менее запутанно, чем здесь :// Автоматическое приведение типа // Логические операнды будут преобразованы в число, если возможно, или в строку (если другая строка) alert ( false == false ); // верное оповещение ( false == 0 ); // верное оповещение ( false == "0" ); // истинное оповещение ( true == true ); // истинное оповещение ( true == 1 ); // истинное оповещение ( true == "1" ); // истинный// Сравнение проверенных типов // Нет преобразования значений alert ( false === false ); // верное оповещение ( false === 0 ); // ложное предупреждение ( false === "0" ); // ложное предупреждение ( true === true ); // истинное оповещение ( true === 1 ); // ложное предупреждение ( true === "1" ); // ложный
Примеры с «ложными» и «истинными» значениями.
предупреждение ( 3 ? истина : ложь ); // истинное оповещение ( true == 3 ); // ложь // 3 является логически истинным (известным как «правда»), как и все не-0 не-нан числа. Однако это не "истинно", даже с приведением типа. предупреждение ( !! ноль == ложь ); // истинное предупреждение ( null == false ); // ложь // Два восклицательных знака преобразуют что-либо в логическое значение в зависимости от того, правдиво оно или нет. Однако автоматическое приведение типов не преобразуется в логические значения. null является ложным, но не "ложным".предупреждение ( false == + 'NaN' ); // false (сокращение для получения значения NaN)
true==2
не false==2
ведет себя так, как можно было бы ожидать.У вас слишком много примеров, они не демонстрируют важных моментов. Логическому контексту нужен свой раздел, это особенность синтаксиса, а не автоматического приведения типа оператором равенства. «что ни true==2
вести false==2
себя так, как можно было бы ожидать». Это уже было продемонстрировано. Преобразование типов с помощью ! оператор — это не то же самое, что автоматическое приведение типов. Опять же, эти правки вредят ясности статьи. Каждый аспект был продемонстрирован задолго до редактирования. Было показано приведение типа, а также логический контекст. Каждый в своем отдельном кодовом поле. Давайте не будем смешивать две совершенно разные функции javascript в одном блоке. Это определенно повод для путаницы. 72.152.120.17 ( разговор ) 16:35, 6 марта 2011 г. (UTC)
PS: я могу добавить, что ! оператор относится к разделу «Операторы», а не к логическим. 72.152.120.17 ( разговор ) 16:42, 6 марта 2011 г. (UTC)
2?true:false
), но ни то, true==2
ни false==2
другое не является истинным, потому что логическое значение автоматически преобразуется в 1, и ни то, 1==2
ни другое не 0==2
является истинным.true
, и никогда false
, (независимо от того, отбрасывается ли логическое значение в пользу исходного значения, и поэтому, возможно, не было так много «преобразовано "как "интерпретировать"... просто не в этом дело.)3?true:false
это правда, а true==3
это ложь; вы вызываете предположение, что false==3
оно верно, но оно также ложно . Так что нет, вы ошибаетесь, когда говорите: «Это уже было продемонстрировано».+"NaN"
это не сокращение, NaN
это сокращение.“ Каждый аспект был продемонстрирован задолго до редактирования. Было показано приведение типа, а также логический контекст. Каждый в своем отдельном кодовом поле. Давайте не будем смешивать две совершенно разные функции javascript в одном блоке. Это определенно повод для путаницы. ”
Старайтесь делать свои посты более компактными. Во-первых: я сказал, что это не «правда», что означает, что это не == правда. Правда не то же самое, что правда. Приведение типа обычно относится к оператору ==, преобразование типа относится к оператору not, логической функции и т. д. Также обратите внимание, что вы добавили большую часть примера. Этот раздел посвящен булевым значениям и их поведению в каждом контексте, в контексте преобразований, равенстве типов и т. д. Дело не в операторе not. 72.152.120.17 ( разговор ) 01:02, 8 марта 2011 г. (UTC)
PS: «Вопреки тому, что вы продолжаете повторять, вы не привели пример, который четко демонстрирует поведение логического операнда, автоматически преобразуемого в число для сравнения». Как насчет "alert(true == 1)"? Мне это кажется хорошим примером. Кажется, вам трудно замечать эти вещи. 72.152.120.17 ( разговор ) 01:04, 8 марта 2011 г. (UTC)
вар obj1 = { а : 1 }; переменная obj2 = { b : 2 } ; функция foo ( p ) { p = obj2 ; // игнорирует фактический параметр p . б = аргументы [ 1 ]; } foo ( obj1 , 3 ); // Никак не влияет на obj1. 3 — дополнительный параметр alert ( obj1.a + " " + объект2 . б ); // пишет 1 3
Это вводит в заблуждение, потому что obj1 может быть изменен функцией. Довольно странно (в объяснении) передавать параметр функции, а затем игнорировать его. Учитывать:
вар obj1 = { а : 1 }; переменная obj2 = { b : 2 } ; функция foo ( п ) { п . а = 7 ; // изменяет глобальную переменную obj1 p = obj2 ; // не влияет на obj1, игнорирует фактический параметр p . б = аргументы [ 1 ]; // изменяет глобальную переменную obj2 } foo ( obj1 , 3 ); // Влияет ли на obj1. 3 — дополнительный параметр alert ( obj1 .a + " " + obj2 .b ) ; // пишет 7 3
Поскольку параметр объекта передается по ссылке, его можно изменить. Это ИЛИ для меня. Я только учусь. Но я был удивлен, что obj1 можно изменить в функции, pa=7, но p=obj2 не влияет на obj1. Это следует объяснить. QuentinUK ( разговор ) 02:27, 28 июня 2011 (UTC)
Это длинный способ сказать «ноль, бесконечность, NaN, истина, ложь»? Какие еще существуют граничные значения? QuentinUK ( разговор ) 11:49, 21 июля 2011 г. (UTC)
Я видел строки, определенные как
var приветствия = /Привет, мир!/
что здесь происходит, т.е. почему это не упоминается в статье. QuentinUK ( разговор ) 12:08, 21 июля 2011 г. (UTC)
Одна проблема с этой статьей в том, что вы не можете прочитать ее от начала до конца. т.е. в разделе Boolean обсуждается оператор == и оператор || и операторы && до того, как они и их странное поведение будут упомянуты.
// Меня удивило следующее: предупреждение (2 && правда); // истинный оповещение (истина && 2); // 2 // также предупреждение (2 == 2 == 1); // истинный предупреждение (1 == 2 == 2); // ложный // Но если бы сначала были объяснены правила, их бы не было.
QuentinUK ( разговор ) 17:39, 21 июля 2011 г. (UTC)
1) В C пробелы важны для предварительной обработки. 2) В С++ пробелы необходимы для вложенных шаблонов > > иначе это становится >> сдвигом
QuentinUK ( разговор ) 17:20, 21 июля 2011 г. (UTC)
Следующее
alert ( ! 0 === Boolean ( ! 0 ) === !! 1 === Boolean ( 1 ) === true ); предупреждение ( !! 0 === логическое значение ( 0 ) === ! 1 === логическое значение ( ! 1 ) === false ); предупреждение ( ! "" === логическое значение ( ! "" ) === !! "s" === Boolean ( "s" ) === true ); alert ( !! "" === Boolean ( "" ) === ! "s" === Boolean ( ! "s" ) === false );
Создается впечатление, что равенство можно связать вместе. A===B===C верно, когда все они равны, это не так. QuentinUK ( разговор ) 10:57, 11 августа 2011 г. (UTC)
В разделе «Переменная» не должно быть ни слова об использовании ключевого слова var ? Что происходит, когда вы его используете? Что происходит, когда вы этого не делаете?
Кроме того, раздел о точках с запятой читается как личный блог и содержит ссылку на внешний блог. -- Тим Сабин ( разговор ) 17:58, 13 апреля 2012 г. (UTC)
Примеры для -= и /= (сокращение от некоммутативных операций) в настоящее время не позволяют читателю сделать вывод о порядке операций. Если мы начнем с x=3, неясно, почему результат x /= 3 равен 1. Было ли это связано с тем, что x было разделено на 3, или потому что 3 было разделено на x? По этой причине я изменяю числовые значения в примере последовательности. Оценщик ( разговор ) 22:42, 15 ноября 2012 г. (UTC)
Если кто-то не увидит в этом проблемы, я добавлю это к способу проверки специального значения `undefined`:
функция isUndefined (о) { return ((typeof o) === "undefined"); }
Кажется, в документе отсутствует способ использования `typeof`. -- Hibou57 ( разговор ) 19:25, 18 июля 2013 г. (UTC)
MDN и MSDN говорят об операторе распространения, написанном "...", и он не рассматривается здесь или в других местах, которые я смог найти в Википедии о JS или ES6. С другой стороны, мне сказали, что, хотя основные источники JS вызывают ... оператора , технически это может быть не оператор. — Хиппитрейл ( обсуждение ) 06:08, 27 января 2016 г. (UTC)
Что касается редактирования и поддержки статей, связанных с JavaScript...
Если вы заинтересованы в совместной работе над статьями по JavaScript или хотели бы узнать, где вы можете помочь, зайдите на сайт Wikipedia:WikiProject JavaScript и не стесняйтесь добавлять свое имя в список участников. Приветствуются как редакторы, так и программисты.
На данный момент мы нашли более 300 статей, связанных с JavaScript . Если вы встретите какие-либо другие, пожалуйста, добавьте их в этот список.
WikiProject также берет на себя организацию страниц поддержки пользовательских сценариев сообщества Википедии. Если вы заинтересованы в том, чтобы помочь организовать информацию о пользовательских сценариях (или вам интересно, чем мы занимаемся), дайте нам знать !
Если вам нужен пользовательский скрипт, которого еще нет, или у вас есть классная идея для пользовательского скрипта или гаджета, вы можете опубликовать ее в Википедии: Пользовательские скрипты/Запросы . А если вы программист JavaScript, это отличное место, где можно найти задания, если вам скучно.
Если вы столкнулись со статьей о JavaScript, которая отчаянно нуждается во внимании редактора и справиться с которой вы не в состоянии, вы можете добавить ее в наш список статей, связанных с JavaScript, которые требуют внимания .
В верхней части страницы обсуждения почти каждой статьи, связанной с JavaScript, находится JavaScript-шаблон WikiProject, где вы можете указать класс качества и важность статьи. Это поможет сообществу отслеживать этап завершения и более внимательно следить за статьями с наивысшим приоритетом.
Спасибо. Трансгуманист 01:10, 12 апреля 2017 г. (UTC)
Я думал, что комментарии к примерам были очень хорошими, вплоть до последнего примера в сеансе функций и нескольких в разделе объектов. Не имея возможности устанавливать точки останова для следования логике, у меня возникли проблемы с пониманием того, что хотел продемонстрировать автор.
Я не знаю, широко ли распространено мое мнение, потому что я самоучка и, возможно, упустил некоторые подразумеваемые моменты. В противном случае, я думал, что это было хорошо сделано. The Source Whisperer ( обсуждение ) 03:58, 6 мая 2019 г. (UTC)
Редактор попросил об обсуждении вопроса о перенаправлении с заявлением . Пожалуйста, примите участие в обсуждении перенаправления , если хотите. — Артур Рубин (разговор) 10:56, 19 мая 2019 г. (UTC)
Синтаксис языка программирования — это набор правил грамматики, которые создают любую правильно написанную программу на данном языке. т.е. программа, которую компилятор/интерпретатор может анализировать (парсить) для перевода.
Это не означает, что грамматика создает код без «ошибок», vgr. for(i=m; i<n; 0++)
является синтаксически правильным, хотя очевидно бессмысленным, поскольку эта программа никогда не останавливается. Правило ограничения и соответствующее приращение, которое сделает false для завершения цикла, являются семантическими, а не синтаксическими . i<n
Такие правила обычно описываются с помощью грамматик БНФ или синтаксических диаграмм .
Статья может также включать семантическое описание каждой программной конструкции. (Полуформальный или формальный, если он есть.)
Я не знаю JavaScript, но я не кажусь таким монстром, как C++ с примерно 300 ключевыми словами. Кажется, он намного меньше, о чем можно рассказать в более короткой статье.
Я согласен, что эта статья слишком длинная, но решение не в том, чтобы фрагментировать ее. Вместо этого следует написать тот, который соответствует тому, что в заголовке говорится о синтаксисе JavaScript , или тот, который включает семантику и переименовывает его в синтаксис и семантику JavaScript .
Статья должна начинаться с описания атомарных элементов, таких как список ключевых слов, допустимые переменные и другие определяемые пользователем имена, синтаксис чисел и все, что играет роль слов в предложении. Затем правило, описывающее программу, за которым следует каждая конструкция программы. Поскольку я не знаю JavaScript, я не могу сказать что-то более корректное. Воспринимайте это как общее руководство для добровольцев, принявших на себя эту миссию.
Источником информации может быть стандартное руководство по языку, если оно существует, поэтому не ждите сотен ссылок. Просто список руководств, описывающих эволюцию языка, потому что одни конструкции появились с первой версии, другие — в более поздних. Было бы нелепо помечать такую статью, призывая к большему количеству ссылок. Это простая задача для опытного программиста JavaScript с некоторым формальным образованием в области ИТ. Элиас ( разговор ) 06:56, 25 декабря 2019 г. (UTC)
[...] Статья также может включать семантическое описание [..]Это было бы катастрофой для статьи, поскольку спецификации содержат много (я имею в виду МНОГО) сложных определений IDL для очень простых языковых конструкций. Я выступаю за то, чтобы приводить простые примеры, избегая излишней академичности/специфичности статьи. AXO NOV (обсуждение) ⚑ 08:35, 13 октября 2020 г. (UTC)
Синтаксис модуля, который является самой базовой вещью каждого интерпретатора JS, отсутствует. Я предлагаю сделать раздел о том, как модульная система работает в разных реализациях, таких как браузер/сервер (например, Google Chrome/Node.js). Я предлагаю не делать его раздутым, чтобы решить проблему, указанную Элиасом . AXO NOV (обсуждение) ⚑ 08:35, 13 октября 2020 г. (UTC)