Я написал этот код в JavaScript:JavaScript: определение вара в конструкторе делает его непригодным для использования
var engiszik;
var numOfCitizens = 10;
function Engiszi()
{
var chance = random(0, 100);
this.type = chance < 67 ? "r" : (chance < 87 ? "o" : "p");
this.mood = ((type === "o") ? random(60, 100, false) : (type === "p" ? random(0, 20) : random(0, 100, false)));
this.changePlace = random(0, 15, false);
}
initialize();
function initialize()
{
engiszik = [];
for(var i = 0; i < numOfCitizens; i ++)
engiszik.push(new Engiszi());
}
random
корректно работает и возвращает число. Части ?:
также кажутся правильными (не совсем уверен: может ли нехватка скобок вызвать в нем ошибки?).
Когда я загружаю страницу, я получаю ошибку «type not found» на линии engiszik.push(new Engiszi());
. Если я удалю переменную chance
из конструктора Engiszi
(и все, что его использует), похоже, это сработает.
В чем причина этого? var
в конструкторе меняет Engiszi
на нормальную функцию вместо конструктора? Как я могу найти способ обойти это (мне действительно нужно chance
, но я не хочу объявлять его как глобальную переменную, если это возможно)?
var in ctor разрешено. Что-то еще смешно с вашим кодом. Поскольку вы только опубликовали его часть (ваш пример не запускается), я предполагаю, что он находится в одной из других частей. – ssube
Вы посмотрели на 'return'ing от функции' Engiszi'? –
может попробовать 'Math.random();' вместо просто 'random()'? –