2016-08-19 3 views
0

Я кодирую AI. Это не работает. В браузере говорится: «Неподготовлено ReferenceError: do не определено.Переменная не определена - javascript

var what = ["jokes", "cats", "news", "weather", "sport"]; 

function start() { 

    var do = what[Math.floor((Math.random() * what.length) + 1)]; 
} 
start(); 
Document.write(do); 
+2

читать о области видимости функции в JavaScript (в основном переменные, определенные внутри функции, видны только внутри этой функции) – mic4ael

+0

Как сказал mic4ael, это проблема с «областями» в Javascript. «do» определяется внутри функции и, таким образом, недоступна снаружи. Если вы инициализировали «делать» вне функции, вы сможете получить к ней доступ. –

+0

http://stackoverflow.com/documentation/javascript/480/scope#t=201608182147440316607 –

ответ

0
var what = ["jokes", "cats", "news", "weather", "sport"]; 
var do; 
function start() { 

    do = what[Math.floor((Math.random() * what.length) + 1)]; 
} 
start(); 
Document.write(do); 
0

сделать это переменная здесь, а не функция.

var do = what[Math.floor((Math.random() * what.length) + 1)]; 

Чтобы создать функцию do, вы бы сделали что-то подобное.

var what = ["jokes", "cats", "news", "weather", "sport"]; 
var do; 
function start() {  
    do = function(){ return what[Math.floor((Math.random() * what.length) + 1)]}; 
} 
start(); 
Document.write(do()); 
+0

И как это будет работать? Довольно уверен, что у вас есть недопустимый JavaScript: 'do = function() = {'? И 'document.write (do)' будет писать 'function() {...}', а не результат вызова функции. –

+0

@MikeMcCaughan: некоторые опечатки ... и инвалиды .. изменены ... – Thalaivar

0

Do присутствует только в вашей функции. Читайте о функции объема :) Попробуйте это:

var what = ["jokes", "cats", "news", "weather", "sport"]; 
var do = undefined; 
function start() { 
    do = what[Math.floor((Math.random() * what.length) + 1)]; 
} 
start(); 
Document.write(do); 
0

Вы делаете переменную выходит за рамки

var what = ["jokes", "cats", "news", "weather", "sport"]; 

function start() { 

    var do = what[Math.floor((Math.random() * what.length) + 1)]; 
} 
start(); 
Document.write(do); 

Вы должны изменить свой код

var what = ["jokes", "cats", "news", "weather", "sport"]; 

function start(callback) { 

    var do = what[Math.floor((Math.random() * what.length) + 1)]; 
    callback(do); 
} 
start(function(val) {document.write(val)}); 
Смежные вопросы