С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Прегрузка функций

01.02.2011, 05:18. Показов 1620. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предусмотрена ли она стандартом хотя бы для нескольких версий функции с разным числом параметров?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2011, 05:18
Ответы с готовыми решениями:

Прегрузка операторов
Возможно ли на С# сделать перегрузки, чтобы выполнялись следующие опрации : String+String String+”Text” ...

Прегрузка операции - Найти сумму факториалов
Найти сумму факториалов. N<10; using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Прегрузка оператора "+" для массива строк
Добрый день, подскажите, как перегрузить оператор сложения двух массивов строк? (A+B) void operator+(*NewMassStr){ for (int i =...

16
 Аватар для Good-bad man
256 / 234 / 38
Регистрация: 31.10.2010
Сообщений: 504
01.02.2011, 10:24
В JS, вроде, нету перегрузки, но можно использовать:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function func(param1, param2, param3, param4){
    if(param1 != null && param2 != null && param3 != null && param4 != null)
        alert('4 параметра');
    else if(param1 != null && param2 != null && param3 != null)
        alert('3 параметра');
    else if(param1 != null && param2 != null)
        alert('2 параметра');
    else if(param1 != null)
        alert('1 параметр');
    else
        alert('Без параметров');
}
func(1,23,45,6);
func(1,23,45);
func(1,23);
func(1);
func();
Для разных типов:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function func(p){
    if(typeof p=="boolean")
        alert('Логическое значение');
    else if(typeof p=="string")
        alert('Строка');
    else if(typeof p=="number")
        alert('Число');
}
func(true);
func('str');
func(25);
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 15:34
Также есть arguments с информацией о всех переданных аргументах и о вызывающей функции.
JavaScript
1
2
3
4
5
function sum() {
    alert(arguments.length);
    // arguments[0], ... arguments[arguments.length - 1]
}
foo(1, 42, 'test', null, void 0, true, [], {}); // 8
Добавлено через 3 минуты
Оперируя данными из arguments, мы знаем, сколько и чего фактически было передано, в то время как объявленные аргументы покажут нам лишь то, что они приняли.
JavaScript
1
2
3
4
5
function f(a, b) {
    alert([a,b]);
};
f(42);         // 42,undefined
f(42, void 0); // 42,undefined  (нет никакой разницы)
А arguments.length четко выдаст 1 и 2 соответсвтенно.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2011, 17:19  [ТС]
Всё это не имеет отношения к перегрузке. Она вообще то предназначена для того, чтоб раный код разнести по нескольким функциям с одним именем, а при таком подходе всё смешается.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 17:25
taras atavin, Чтобы была перегрузка, должен быть компилятор/транслятор, который на стадии компиляции/трансляции по способу вызова определяет, какая версия имеется ввиду. Для этого типы данных должны быть известны уже при компиляции/трансляции.
JavaScript устроен совершенно по-другому.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2011, 17:42  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Чтобы была перегрузка, должен быть компилятор/транслятор, который на стадии компиляции/трансляции по способу вызова определяет, какая версия имеется ввиду. Для этого типы данных должны быть известны уже при компиляции/трансляции.
JavaScript устроен совершенно по-другому.
Я знаю, что такое перегрузка, что для неё надо и чем отличается компилятор от интерпретатора. Но изменчивость типа в этом плане страша только компилятору, а интерпретатор знает способ вызова во время трансляции, так как транслирует во время исполнения. А если не указан тип параметра, то остаётся хотя бы количество параметров.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 18:52
taras atavin, Верю, что знаете. В случае компилируемого кода проверка типов и выбор нужной версии функции выполняется только один раз, и в выполняемом коде такая проверка отсутствует. В случае JS такая проверка для выбора нужной версии функции потребовалась бы при каждом вызове функции, ибо тип данных имеют только значения.

Цитата Сообщение от taras atavin Посмотреть сообщение
А если не указан тип параметра, то остаётся хотя бы количество параметров.
JavaScript
1
2
3
switch (arguments.length) {
    ...
};
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.02.2011, 06:21  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В случае JS такая проверка для выбора нужной версии функции потребовалась бы при каждом вызове функции
так он и транслирует при каждом вызове и даже при каждом исполнении каждой строчки, это же интерпретатор.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
02.02.2011, 17:06
taras atavin, Нет, он один раз перед выполнением весь код транслирует, и только потом, если нет синтаксических ошибок, выполняет. Иначе в таком коде мы бы сначала увидели алерт, и только потом оно бы наткнулось на ошибку синтаксиса:
JavaScript
1
2
alert(42);
=
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
02.02.2011, 18:04  [ТС]
Этот код правильный
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
var skipdata;
 
var logtext = document.getElementById("logtext");
 
var s="";
 
var minx;
 
var maxx;
 
var maxy;
 
window.onload = Start();
 
function Start()
 
{
 
 DrawAll(8, 4, 6, 128);
 
}
 
function CalculateTree(x, y, radius, levels, level, number, step)
 
{
 
 var r;
 
 var leftx;
 
 var rightx;
 
 var bottomy;
 
 if (number!=skipdata)
 
 {  
 
  r=number;
 
  leftx=x-radius-1;
 
  rightx=x+radius+1;
 
  bottomy=y+radius+1;
 
  if (leftx<minx)
 
  {
 
   minx=leftx;
 
  }
 
  if (rightx>maxx)
 
  {
 
   maxx=rightx;
 
  }
 
  if (bottomy>maxy)
 
  {
 
   maxy=bottomy;
 
  }
 
  if (level<levels)
 
  {
 
   r=CalculateTree(x-step, y+step, radius, levels, level+1, r+1, step/2);
 
   r=CalculateTree(x+step, y+step, radius, levels, level+1, r+1, step/2);
 
  }
 
  return r;
 
 }
 
 skipdata=0;
 
 return number-1;
 
}
 
function DrawTree(x, y, radius, levels, level, number, step)
 
{
 
 var canvas = document.getElementById("Tree");
 
 var context = canvas.getContext("2d");
 
 var r;
 
 var l;
 
 l=radius*Math.cos(Math.PI/4);
 
 if (number!=skipdata)
 
 {
 
  context.lineWidth=1;
 
  context.strokeStyle = "black";
 
  context.beginPath();
 
  context.arc(x, y, radius, 0, 2*Math.PI, false);
 
  context.closePath();
 
  context.stroke();
 
  r=number;
 
  s+="<p> level=";
 
  s+=level;
 
  s+=", number=";
 
  s+=number;
 
  s+=", x=";
 
  s+=x;
 
  s+=", y=";
 
  s+=y;
 
  s+=", skip=";
 
  s+=skipdata;
 
  if (level<levels)
 
  {
 
   s+=", step=";
 
   s+=step;
 
   s+=", Δstep=";
 
   s+=l;
 
  }
 
  s+="</p>";
 
  if (level<levels)
 
  {
 
   if ((r+1)!=skipdata)
 
   {
 
    context.lineWidth=1;
 
    context.strokeStyle = "red";
 
    context.beginPath();
    context.moveTo(x-l, y+l);
 
    context.lineTo(x-step+l, y+step-l);
 
    context.closePath();
 
    context.stroke();
 
   }
 
   r=DrawTree(x-step, y+step, radius, levels, level+1, r+1, step/2);
 
   if ((r+1)!=skipdata)
 
   {
 
    context.lineWidth=1;
 
    context.strokeStyle = "red";
 
    context.beginPath();
 
    context.moveTo(x+l, y+l);
 
    context.lineTo(x+step-l, y+step-l);
 
    context.closePath();
 
    context.stroke();
 
   }
 
   r=DrawTree(x+step, y+step, radius, levels, level+1, r+1, step/2);
 
  }
 
  return r;
 
 }
 
 skipdata=0;
 
 return number-1;
 
}
 
function DrawAll(radius, levels, skip, step)
 
{
 
 var n;
 
 var ForTree=document.getElementById("ForTree");;
 
 minx=0;
 
 maxx=0;
 
 maxy=0;
 
 skipdata=skip;
 
 n=CalculateTree(0, radius+1, radius, levels, 1, 1, step);
 
 ForTree.innerHTML='<canvas id="Tree" width='+(maxx-minx)+' height='+maxy+'>Для правильного отображения данной страницы пользуйтей стандарным web-браузером с поддержкой тега &lt;canvas></canvas>';
 
 ForTree= document.getElementById("ForTree");
 
 skipdata=skip;
 
 n=DrawTree(-minx, radius+1, radius, levels, 1, 1, step);
 
 logtext.innerHTML=s;
 
}
портим синтаксис и ставим алерт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
var skipdata;
 
var logtext = document.getElementById("logtext");
 
var s="";
 
var minx;
 
var maxx;
 
var maxy;
 
window.onload = Start();
 
function Start()
 
{
 
 DrawAll(8, 4, 6, 128);
 
}
 
function CalculateTree(x, y, radius, levels, level, number, step)
 
{
 
 var r;
 
 var leftx;
 
 var rightx;
 
 var bottomy;
 
 if (number!=skipdata)
 
 {  
 
  r=number;
 
  leftx=x-radius-1;
 
  rightx=x+radius+1;
 
  bottomy=y+radius+1;
 
  if (leftx<minx)
 
  {
 
   minx=leftx;
 
  }
 
  if (rightx>maxx)
 
  {
 
   maxx=rightx;
 
  }
 
  if (bottomy>maxy)
 
  {
 
   maxy=bottomy;
 
  }
 
  if (level<levels)
 
  {
 
   r=CalculateTree(x-step, y+step, radius, levels, level+1, r+1, step/2);
 
   r=CalculateTree(x+step, y+step, radius, levels, level+1, r+1, step/2);
 
  }
 
  return r;
 
 }
 
 skipdata=0;
 
 return number-1;
 
}
 
function DrawTree(x, y, radius, levels, level, number, step)
 
{
 
 var canvas = document.getElementById("Tree");
 
 var context = canvas.getContext("2d");
 
 var r;
 
 var l;
 
 l=radius*Math.cos(Math.PI/4);
 
 if (number!=skipdata)
 
 {
 
  context.lineWidth=1;
 
  context.strokeStyle = "black";
 
  context.beginPath();
 
  context.arc(x, y, radius, 0, 2*Math.PI, false);
 
  context.closePath();
 
  context.stroke();
 
  r=number;
 
  s+="<p> level=";
 
  s+=level;
 
  s+=", number=";
 
  s+=number;
 
  s+=", x=";
 
  s+=x;
 
  s+=", y=";
 
  s+=y;
 
  s+=", skip=";
 
  s+=skipdata;
 
  if (level<levels)
 
  {
 
   s+=", step=";
 
   s+=step;
 
   s+=", Δstep=";
 
   s+=l;
 
  }
 
  s+="</p>";
 
  if (level<levels)
 
  {
 
   if ((r+1)!=skipdata)
 
   {
 
    context.lineWidth=1;
 
    context.strokeStyle = "red";
 
    context.beginPath();
    alert(12);
    context.moveеo(x-l, y+l);
 
    context.lineTo(x-step+l, y+step-l);
 
    context.closePath();
 
    context.stroke();
 
   }
 
   r=DrawTree(x-step, y+step, radius, levels, level+1, r+1, step/2);
 
   if ((r+1)!=skipdata)
 
   {
 
    context.lineWidth=1;
 
    context.strokeStyle = "red";
 
    context.beginPath();
 
    context.moveTo(x+l, y+l);
 
    context.lineTo(x+step-l, y+step-l);
 
    context.closePath();
 
    context.stroke();
 
   }
 
   r=DrawTree(x+step, y+step, radius, levels, level+1, r+1, step/2);
 
  }
 
  return r;
 
 }
 
 skipdata=0;
 
 return number-1;
 
}
 
function DrawAll(radius, levels, skip, step)
 
{
 
 var n;
 
 var ForTree=document.getElementById("ForTree");;
 
 minx=0;
 
 maxx=0;
 
 maxy=0;
 
 skipdata=skip;
 
 n=CalculateTree(0, radius+1, radius, levels, 1, 1, step);
 
 ForTree.innerHTML='<canvas id="Tree" width='+(maxx-minx)+' height='+maxy+'>Для правильного отображения данной страницы пользуйтей стандарным web-браузером с поддержкой тега &lt;canvas></canvas>';
 
 ForTree= document.getElementById("ForTree");
 
 skipdata=skip;
 
 n=DrawTree(-minx, radius+1, radius, levels, 1, 1, step);
 
 logtext.innerHTML=s;
 
}
Алерт будет виден. Я так всегда ошибки синтаксиса в javascripte ищу и нахожу. И вообще, определения:
интерпретатором называется транслятор, транслирующий каждую строку при каждом её исполнении
,
компилятором называется транслятор, транслирующий всю программу один раз до её запуска
. javascript - компилируемый? Учи матчасть!
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
02.02.2011, 19:01
Цитата Сообщение от taras atavin Посмотреть сообщение
портим синтаксис и ставим алерт
Алерт будет виден. Я так всегда ошибки синтаксиса в javascripte ищу и нахожу
Ошибки синтаксиса отстствуют. Не может оно запустить код, если в коде есть ошибка синтаксиса.
Цитата Сообщение от taras atavin Посмотреть сообщение
И вообще, определения:
Терминология - это отдельная история, суть сейчас не в ней. Код на JavaScript, сначала всегда весь целиком и полностью интерпретируется/транслируется/компилируется интерпретатором/виртуальной_машиной, а только потом, если успешно удалось, выполняется. Всякие там мелочи вроде необъявленных переменных - это уже ошибки выполнения. Так устроен ECMA Script.

Цитата Сообщение от taras atavin Посмотреть сообщение
Учи матчасть!
Какая матчасть, тут философия сплошая. Я Вам также могу ответить, мол, ECMA Script читайте.
http://www.ecma-international.... ma-262.htm
http://www.ecma-international.... MA-262.pdf
http://dmitrysoshnikov.com/ecm... roduction/

Добавлено через 9 минут
taras atavin,
JavaScript
1
2
3
function Ы(){};
var Ъ = 42;
alert([typeof Ы, typeof Ъ]);
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.02.2011, 06:44  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Ошибки синтаксиса отстствуют. Не может оно запустить код, если в коде есть ошибка синтаксиса.
Как же я запускал? и метода movee не существует.

Добавлено через 1 минуту
И найди как, где в стандарте, или в литературе написано, что это компилируемый язык.

Добавлено через 1 час 22 минуты
Модераторы, закройте тему. Вопрос был, есть ли перегрузка. Ответ на этот вопрос получен. А почему её нет, можно гадать до бесконечности. К тому же анализировать причины пытаются те, кто даже не знает, чем вообще отличается интерпретатор от компилятора.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.02.2011, 15:51
Цитата Сообщение от taras atavin Посмотреть сообщение
и метода movee не существует.
Методов, как таковых, вообще не существует в JS. Есть свойства, в которых хранятся функции. Чтение свойства у любого объекта не есть ошибка. В данном случае ошибка будет только в попытке применить вызов функции к undefined, которое прочитается из несуществующего свойства movee.
Цитата Сообщение от taras atavin Посмотреть сообщение
И найди как, где в стандарте, или в литературе написано, что это компилируемый язык.
В ECMA-262 об этом сказано, что это scripting language. О том, как он будет в конечном итоге выполняться, речь вообще не идет, это уже на совести реализации. Важно лишь, что... я это уже два раза повторял.

Цитата Сообщение от taras atavin Посмотреть сообщение
К тому же анализировать причины пытаются те, кто даже не знает, чем вообще отличается интерпретатор от компилятора.
В таком случае я бы Вас попросил объяснить сию разницу для особо отдаленных вроде меня. Вот по мне, так все равно, как оно называется, хоть трактором, хоть кирпичом. Главное, что я сам для себя знаю, как оно работает, и знаю, как этим пользоваться.

Не по теме:

Похоже на странный спор теоретика с практиком.

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.02.2011, 18:23  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Чтение свойства у любого объекта не есть ошибка.
а ты следом за этой не ошибкой второй алерт поставь, он не сработает. Так что ошибка. И c++ транслируя один раз, поддерживает полиморфизм, то есть с одним и тем же объектом работают разные версии функций и даже операторов в зависимости от фактического типа значения, причём, поведение объекта может меняться много раз. А джавный скрипт интерпретируемый, что означает трансляцию при каждом исполнении каждой строки.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.02.2011, 18:53
Цитата Сообщение от taras atavin Посмотреть сообщение
А джавный скрипт интерпретируемый, что означает трансляцию при каждом исполнении каждой строки.
Вижу, Вам бесполезно что-либо доказывать. Докажите Вы Ваше утверждение. Вот виндовые батники, например, - никаких вопросов - каждая строка отдельно сначала анализируется, затем выполняется. Докажите наглядным примером, что JavaScript каждую "строку" отдельно транслирует.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.02.2011, 05:35  [ТС]
Сам запускал примеры, какие приводишь? Я же как раз и привёл "доказательство". Кроме того, раз уж мы о языке говорим, то доказательством должна быть выдержка из стандарта, а то вдруг это хром несёт отсебятину, а я за ним повторяю? Ну так вот, поищи как там слова "компиляция" и "интерпретация", или производные от них. Интерпретацией называется трансляция в процессе, компиляцией - заранее. Java, которая не скриптовая, а просто джава обычно транслируется так: сначала компиляция в промежуточный байт-код, а потом ещё и его интерпретация. И кто сказал, что при интерпретации нельзя синтаксический анализ выполнить как при компиляции? Спектрумовский бейсик транслирует каждую строку при каждом её исполнении, но синтаксический анализ осуществляет один раз до запуска программы (читай мануал, распространяемый с самой машиной, литературу, пиши проги, гоняй их на эмуляторе). Но javascript в реализации гуглового хрома даже так не делает.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
04.02.2011, 17:41
Цитата Сообщение от taras atavin Посмотреть сообщение
Сам запускал примеры, какие приводишь?
Да чуть ли не каждый день таких примеров невольно Nцать штук случается.

Цитата Сообщение от taras atavin Посмотреть сообщение
Я же как раз и привёл "доказательство".
Вы имеете ввиду тот код с "несуществующим методом"? Там нет синтаксической ошибки.
И про методы я уже объяснял. Нет методов, как таковых. Есть свойства, в которых хранятся функции. Наличие и значения свойств можно определить только при выполнении.

Цитата Сообщение от taras atavin Посмотреть сообщение
Ну так вот, поищи как там слова "компиляция" и "интерпретация", или производные от них.
Спецификация ECMA Script четко сказано, что (Вы читаете всё, что я Вам пишу, или только выборочно?) весь исходный код сначала целиком анализируется парсером, разбивается на поток токенов согласно грамматике языка. Весь исходный код сразу целиком от начала до конца.
Цитаты
Один:
Цитата Сообщение от ECMA-262
5 Notational Conventions
5.1 Syntactic and Lexical Grammars
5.1.4 The Syntactic Grammar
When a stream of characters is to be parsed as an ECMAScript program, it is first converted to a stream of input elements by repeated application of the lexical grammar; this stream of input elements is then parsed by a single application of the syntactic grammar. The program is syntactically in error if the tokens in the stream of input elements cannot be parsed as a single instance of the goal nonterminal Program, with no tokens left over.
Два
Цитата Сообщение от ECMA-262
7 Lexical Conventions
The source text of an ECMAScript program is first converted into a sequence of input elements, which are tokens, line terminators, comments, or white space. The source text is scanned from left to right, repeatedly taking the longest possible sequence of characters as the next input element.
Три
Цитата Сообщение от ECMA-262
16 Errors
An implementation must report most errors at the time the relevant ECMAScript language construct is evaluated. An early error is an error that can be detected and reported prior to the evaluation of any construct in the Program containing the error. An implementation must report early errors in a Program prior to the first evaluation of that Program. Early errors in eval code are reported at the time eval is called but prior to evaluation of any construct within the eval code. All errors that are not early errors are runtime errors.

An implementation must treat any instance of the following kinds of errors as an early error:
  • Any syntax error.
  • ...
Особоенно последнее: любая синтаксическая ошибка должна быть обнаружена еще до запуска кода.

Там же продолжение
Цитата Сообщение от ECMA-262
An implementation shall not treat other kinds of errors as early errors even if the compiler can prove that a construct cannot execute without error under any circumstances. An implementation may issue an early warning in such a case, but it should not report the error until the relevant construct is actually executed.
Источник: http://www.ecma-international.... MA-262.pdf

Что потом дальше с этими токенами будет делаться - это уже другая история, и нас сейчас это не интерисует, ибо суть дискуссии в том, что:
Цитата Сообщение от taras atavin Посмотреть сообщение
так он и транслирует при каждом вызове и даже при каждом исполнении каждой строчки, это же интерпретатор.
.

Цитата Сообщение от taras atavin Посмотреть сообщение
Интерпретацией называется трансляция в процессе, компиляцией - заранее.
Значит, компиляция.
Цитата Сообщение от taras atavin Посмотреть сообщение
Но javascript в реализации гуглового хрома даже так не делает.
Всё в допустимых пределах согласно спецификации делает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2011, 17:41
Помогаю со студенческими работами здесь

Написание своих функций chr() и ord(), без использования встроенных функций
В общем, нужно написать эти две функции, которые будут являться аналогами встроенных. ex_chr(code : byte) : char; begin .... ...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Нахождение производных булевых функций и доказательство полноты системы функций
1) Найти все производные следующей булевой функции. 2) Доказать полноту следующей системы функций. Сами функции прикрепил...

Доказать свойство булевых функций от n аргументов и полных систем функций
Докажите, что среди булевых функций от n аргументов имеется ровно 2^(2^n-2)-2^(2^(n-1)-1) таких, каждая из которых образует полную...

Замкнутые классы и полнота систем булевых функций. Минимизация функций алгебры логики
1. Проверить, полна ли система функций А. 2. По заданной д.н.ф. D с помощью метода Блейка построить сокращенную д.н.ф. 3. Построить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru