Как передать переменную одной функции, а затем вернуть значение другой функции?
Переменная - это небольшой контейнер, в котором вы храните значение. Когда вы передаете переменную функции, вы действительно передаете ей значение этой переменной. Так что в вашем случае:
passfrom(curpage);
и
passfrom(1);
одинаковы.
Внутри функции имена переменных используются для доступа к этим значениям. Эти имена полностью независимы от того, какое имя было привязано к значению вне функции (если оно даже имело имя). Они больше похожи на псевдонимы. Чтобы отличить их от переменных, мы называем их параметрами. Так это одно:
function passfrom(currpage) {
var newpage = parseInt(currpage)*1000;
return newpage;
}
и этот:
function passfrom(myownname) {
var newpage = parseInt(myownname)*1000;
return newpage;
}
точно так же. И если мы должны были написать, что на самом деле происходит, мы получим следующее:
// var xyz = passfrom(currpage);
var xyz = value-of(passfrom(value-of(currpage))
Так все, что вам нужно сделать, чтобы передать значение некоторой функции, чтобы убедиться, что она имеет такое имя параметра доступное в которой он может использовать это значение:
function passto(myalias) {
console.log(myalias);
}
passto(xyz); // writes 1000 to the console.
Вышеупомянутый - это фактический ответ на ваш вопрос.
Чтобы сделать вещи немного более сложным, есть еще две вещи, которые нужно принять во внимание:
Scope. Имена параметров работают только внутри вашей функции. Если они не совпадают с именем переменной вне функции, эта внешняя переменная скрыта параметром. Итак:
var currpage = 1;
function plusOne(currpage) { curpage += 1; }
plusOne(currpage);
console.log(currpage); // 1, as the variable currpage was hidden
function plusTwo(othername) (currpage += 2; }
plusTwo(currpage);
console.log(currpage); // 3, as currpage was not hidden
Это все работает для строк, целых чисел и других простых типов. Когда вы имеете дело с более сложными типами, имя параметра не является псевдонимом для значения, переданного функции, но для местоположения исходного значения. Таким образом, в этом случае, что вы делаете с параметром в функции будет автоматически происходить с переменной вне функции:
var arr = [ 0, 1 ];
function plusOne(somearr) { somearr[0] += 1; }
plusOne(arr);
console.log(arr[0]); // 1, as somearr references arr directly
Это называется «передача по значению» и «пройти по ссылке.»
'typeof NaN' - это номер' ', вы должны знать. И нет необходимости во втором «var» во втором «var newcurr». Во всяком случае: 'passto()' возвращает 'NaN'. –
Вы ничего не передадите passfrom() в passto(), вам нужно передать ему номер. – dandavis
Это уже сказано, но я говорю это снова: 'var newcurr = passfrom();' '<-' вы не передаете значение' passfrom'. –