2015-09-20 2 views
0

Что не так с моим кодом? Я не понимаю, почему он не работает. Что-то пошло не так с моей лямбда-функцией.Лямбда-функция в javascript

var a=5; 
var b=6; 
function lambda_test(a){ 

    return function(a){ 
     return a*a; 
    }; 
} 
var c=lambda_test(a); 
window.alert(c); 

ответ

2

a в вашей внутренней функции затенения a в вашей внешней функции (которая, в свою очередь, слежка крайние один   — что много различных a с для всего несколько строк кода!) , Дайте аргументы разные имена.

Вы также никогда не являетесь , вызывая функцию, которую вы возвращаете и храните в c. Ваш вызов lambda_test создает функцию, но не вызывает ее; вы бы тогда сделать это по телефону c:

function lambda_test(outer){ 
 

 
    return function(inner){ 
 
     return outer * inner; 
 
    }; 
 
} 
 
var c=lambda_test(5); 
 
alert(c(6)); // 30

+0

нет, в результате я имею переменную как имена string.Changing не помогает. –

+2

@EdwardRyzhewski: Нет, в вашем коде нет никаких строк, пока 'alert' неявно преобразует свой аргумент в строку для отображения. Внимательно прочитайте это и попробуйте запустить его (этот сниппет выполняется). –

+1

спасибо, я понял работу. –

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