2012-01-09 4 views
2

Это, вероятно, было предложено до, но все, что я могу найти вопросы, касающиеся C и Bash и т.д.Понимание функции параметров

В основном я действительно трудное время получить мою голову вокруг функциональных параметров и какие они ссылаются.

Я знаю, что вы обычно устанавливаете параметры при вызове функции, например. doSomething(3,'Hello') и т. Д., Но когда я читаю код из таких учебников;

window.onload = initAll; 

function initAll() { 
    if (document.getElementById) { 
     for (var i=0; i<24; i++) { 
      setSquare(i); 
     } 
    } 
    else { 
     alert("Sorry, your browser doesn't support this script"); 
    } 
} 

function setSquare(thisSquare) { 
    var currSquare = "square" + thisSquare; 
    var colPlace = new Array(0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4); 
    var colBasis = colPlace[thisSquare] * 15; 
    var newNum = colBasis + getNewNum() + 1; 

    document.getElementById(currSquare).innerHTML = newNum; 
} 

function getNewNum() { 
    return Math.floor(Math.random() * 15); 
} 

Где setSquare() получает параметр thisSquare от?

+0

Вы ссылаетесь на вызов 'setSquare (i)'? Я не совсем уверен, в чем ваш вопрос. –

ответ

1

В вашей первой функции initAll() вы вызываете setSquare (i). В этом случае параметр i является параметром. Согласно initAll(), i представляет собой число в цикле for. Существенно, что происходит, вы вызываете setSquare для каждого квадратного числа от 0 до 24.

Функция setSquare() переименовала i в thisSquare. Теперь где-нибудь внутри функции setSquare(), thisSquare установлено на то же значение, что и у i.

Надеюсь, что это поможет, удачи.

+0

Довольно хорошо .... Я люблю четкие ответы ... bravo ..... Еще один вопрос, если вы не возражаете против setSquare (i), заключается в том, что в основном вызов функции до того, как функция была создан? –

+0

@ 17bc17: no, JavaScript-интерпретаторы «hoist» с именем 'function' определения в верхней части области. Поэтому перед запуском кода интерпретатор переводит его в нечто вроде этого: http://pastie.org/3157006 – PPvG

+0

@PPvg - Спасибо за ответ, его очень ценят. У вас есть какие-либо ссылки, которые объясняют это более подробно?, Просто я довольно новичок в этом. –

1

Внутри initAll есть следующий код:

for (var i=0; i<24; i++) { 
    setSquare(i); 
} 

Так initAll звонит setSquare 24 раз. Каждый раз, проходя через значение i. (0, 1, 2 и т. Д.). Таким образом, значение i равно thisSquare

0

setSquare вызывается в функции initAll, который передает его значение, от 0 до 23. initAll функция вызывается при загрузке страницы (в теории).

0

Она получает его из for цикла в initAll() функции в этом случае, но он мог бы получить его от туда, куда вы звоните setSquare функция

0

Где угольник получает параметр thisSquare от?

Прямо здесь: setSquare(i);

Внутри функции угольник currSquare заканчивает тем, что идентификатор элемента Dom (например, currSquare1).

Смежные вопросы