4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
1

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

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

Предусмотрена ли она стандартом хотя бы для нескольких версий функции с разным числом параметров?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2011, 05:18
Ответы с готовыми решениями:

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

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

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

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

16
256 / 234 / 38
Регистрация: 31.10.2010
Сообщений: 504
01.02.2011, 10:24 2
В 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
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 15:34 3
Также есть 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
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
01.02.2011, 17:19  [ТС] 4
Всё это не имеет отношения к перегрузке. Она вообще то предназначена для того, чтоб раный код разнести по нескольким функциям с одним именем, а при таком подходе всё смешается.
0
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 17:25 5
taras atavin, Чтобы была перегрузка, должен быть компилятор/транслятор, который на стадии компиляции/трансляции по способу вызова определяет, какая версия имеется ввиду. Для этого типы данных должны быть известны уже при компиляции/трансляции.
JavaScript устроен совершенно по-другому.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
01.02.2011, 17:42  [ТС] 6
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Чтобы была перегрузка, должен быть компилятор/транслятор, который на стадии компиляции/трансляции по способу вызова определяет, какая версия имеется ввиду. Для этого типы данных должны быть известны уже при компиляции/трансляции.
JavaScript устроен совершенно по-другому.
Я знаю, что такое перегрузка, что для неё надо и чем отличается компилятор от интерпретатора. Но изменчивость типа в этом плане страша только компилятору, а интерпретатор знает способ вызова во время трансляции, так как транслирует во время исполнения. А если не указан тип параметра, то остаётся хотя бы количество параметров.
0
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
01.02.2011, 18:52 7
taras atavin, Верю, что знаете. В случае компилируемого кода проверка типов и выбор нужной версии функции выполняется только один раз, и в выполняемом коде такая проверка отсутствует. В случае JS такая проверка для выбора нужной версии функции потребовалась бы при каждом вызове функции, ибо тип данных имеют только значения.

Цитата Сообщение от taras atavin Посмотреть сообщение
А если не указан тип параметра, то остаётся хотя бы количество параметров.
Javascript
1
2
3
switch (arguments.length) {
    ...
};
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
02.02.2011, 06:21  [ТС] 8
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В случае JS такая проверка для выбора нужной версии функции потребовалась бы при каждом вызове функции
так он и транслирует при каждом вызове и даже при каждом исполнении каждой строчки, это же интерпретатор.
0
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
02.02.2011, 17:06 9
taras atavin, Нет, он один раз перед выполнением весь код транслирует, и только потом, если нет синтаксических ошибок, выполняет. Иначе в таком коде мы бы сначала увидели алерт, и только потом оно бы наткнулось на ошибку синтаксиса:
Javascript
1
2
alert(42);
=
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
02.02.2011, 18:04  [ТС] 10
Этот код правильный
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
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
02.02.2011, 19:01 11
Цитата Сообщение от 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
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
03.02.2011, 06:44  [ТС] 12
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Ошибки синтаксиса отстствуют. Не может оно запустить код, если в коде есть ошибка синтаксиса.
Как же я запускал? и метода movee не существует.

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

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

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

Не по теме:

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

0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
03.02.2011, 18:23  [ТС] 14
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Чтение свойства у любого объекта не есть ошибка.
а ты следом за этой не ошибкой второй алерт поставь, он не сработает. Так что ошибка. И c++ транслируя один раз, поддерживает полиморфизм, то есть с одним и тем же объектом работают разные версии функций и даже операторов в зависимости от фактического типа значения, причём, поведение объекта может меняться много раз. А джавный скрипт интерпретируемый, что означает трансляцию при каждом исполнении каждой строки.
0
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
03.02.2011, 18:53 15
Цитата Сообщение от taras atavin Посмотреть сообщение
А джавный скрипт интерпретируемый, что означает трансляцию при каждом исполнении каждой строки.
Вижу, Вам бесполезно что-либо доказывать. Докажите Вы Ваше утверждение. Вот виндовые батники, например, - никаких вопросов - каждая строка отдельно сначала анализируется, затем выполняется. Докажите наглядным примером, что JavaScript каждую "строку" отдельно транслирует.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
04.02.2011, 05:35  [ТС] 16
Сам запускал примеры, какие приводишь? Я же как раз и привёл "доказательство". Кроме того, раз уж мы о языке говорим, то доказательством должна быть выдержка из стандарта, а то вдруг это хром несёт отсебятину, а я за ним повторяю? Ну так вот, поищи как там слова "компиляция" и "интерпретация", или производные от них. Интерпретацией называется трансляция в процессе, компиляцией - заранее. Java, которая не скриптовая, а просто джава обычно транслируется так: сначала компиляция в промежуточный байт-код, а потом ещё и его интерпретация. И кто сказал, что при интерпретации нельзя синтаксический анализ выполнить как при компиляции? Спектрумовский бейсик транслирует каждую строку при каждом её исполнении, но синтаксический анализ осуществляет один раз до запуска программы (читай мануал, распространяемый с самой машиной, литературу, пиши проги, гоняй их на эмуляторе). Но javascript в реализации гуглового хрома даже так не делает.
0
13201 / 6588 / 1040
Регистрация: 10.01.2008
Сообщений: 15,069
04.02.2011, 17:41 17
Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2011, 17:41

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.