Неопределенная переменная
в Неопределенная переменная исходном коде компьютерной программы — это переменная , к которой осуществляется доступ в коде, но которая не объявлена в этом коде. [1]
В некоторых языках программирования неявное объявление предоставляется при первом обнаружении такой переменной во время компиляции . В других языках такое использование считается достаточно серьезным, поэтому выдается диагностика и компиляция завершается неудачно.
Некоторые определения языка изначально использовали поведение неявного объявления, а по мере их развития предоставляли возможность его отключения (например, Perl " use warnings
" или Visual Basic " Option Explicit
").
Примеры
[ редактировать ]Ниже приведены некоторые примеры того, как различные реализации языков программирования реагируют на неопределенные переменные. За каждым фрагментом кода следует сообщение об ошибке (если таковое имеется).
КЛИСП
[ редактировать ](setf y x)
*** - EVAL: variable X has no value
С
[ редактировать ]int main() {
int y = x;
return 0;
}
foo.c: In function `main': foo.c:2: error: `x' undeclared (first use in this function) foo.c:2: error: (Each undeclared identifier is reported only once foo.c:2: error: for each function it appears in.)
Ошибка ReferenceError возникает только в том случае, если тот же фрагмент исполняемого кода имеет let
или const
(но не var
) позже или если код выполняется в строгом режиме. Во всех остальных случаях переменная будет иметь специальное значение. undefined
.
"use strict";
let y = x;
let y = x;
let x; // causes error on line 1
ReferenceError: x is not defined Source File: file:///c:/temp/foo.js
Два
[ редактировать ]y = x
(нет ошибок, продолжаем)
print(y)
nil
ML (Стандарт ML Нью-Джерси)
[ редактировать ]val y = x;
stdIn:1.9 Error: unbound variable or constructor: x
Свинка
[ редактировать ]Set Y=X
<UNDEF>
OCaml
[ редактировать ]let y = x;;
Unbound value x
Перл
[ редактировать ]my $y = ($x // 0) + 1; # defined-or operator
(no error)
PHP 5
[ редактировать ]$y = $x;
(no error)
$y="";
$x="";
error_reporting(E_ALL);
$y = $x;
PHP Notice: Undefined variable: x in foo.php on line 3
Питон
[ редактировать ]Питон 3
[ редактировать ]x = y
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
x = y
NameError: name 'y' is not defined
Питон 2.4
[ редактировать ]>>> x = y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined
РЕКСС
[ редактировать ]signal on novalue
y = x
+++ Error 30 in line 2: Label not found
Руби
[ редактировать ]irb(main):001:0> y = x
NameError: undefined local variable or method `x' for main:Object
from (irb):1
Ткл
[ редактировать ]% set y $x
can't read "x": no such variable
Dim y
y = x
(no error)
Option Explicit
Dim y
y = x
(3, 1) Microsoft VBScript runtime error: Variable is undefined: 'x'
Ссылки
[ редактировать ]- ^ «неопределенная переменная». Ваш словарь и Интернет. 24 июля 2013 г. < http://computer.yourdictionary.com/undefined-variable >.