Замыкания как получить доступ к переменным
Почитал статьи на хабре по замыканиям. Все вопросы в коде.
var name = new Array(''Viktor', 'Daniil', 'Danislav''Osip', 'Ostap'); var family = new Array('Smirnov', 'Ivanov', 'Kuznecov', 'Popov', 'Sokolov'); var email = new Array('@gmail.com', '@tut.by', '@mail.ru', '@hotmail.com'); function getRegistr(){ var name, family, email; var rnd = function(){ name = Math.floor(Math.random()*/*как получить доступ к массиву name?*/.length); family = Math.floor(Math.random()*/*как получить доступ к массиву family?*/.length); email = Math.floor(Math.random()*/*как получить доступ к массиву email?*/.length); }; return {"name": name,"family": family,"email": email}; }; var t = getRegistr(); alert(name[t.name]);// пишет undefined |
lllypyn,
доступ есть просто по имени, но строчка var name, family, email; перекрывает внешние переменные, заменяя их на внутренние. |
Цитата:
var name = new Array('Viktor', 'Daniil', 'Danislav','Osip', 'Ostap'); var family = new Array('Smirnov', 'Ivanov', 'Kuznecov', 'Popov', 'Sokolov'); var email = new Array('@gmail.com', '@tut.by', '@mail.ru', '@hotmail.com'); function getRegistr(){ var rnd = function(x){ return x[Math.floor(Math.random()*x.length)]; }; return {"name": rnd(name),"family": rnd(family),"email": rnd(email)}; }; var t = getRegistr(); alert(JSON.stringify(t)); |
Цитата:
Цитата:
|
Цитата:
(function() { ... })(); но тогда внешние name, family, email по прежнему будут перекрываться внутренними. вывод: внутренние надо убрать. |
Цитата:
|
Цитата:
Цитата:
getRegistr().name |
Часовой пояс GMT +3, время: 05:16. |