Почему выводит undefined? function rush (filename){ (function(){ var res = filename.split(".") var b = res[res.lenght - 1] return b })() } alert(rush("work.tt")) Заранее благодарен!
Ответ Почему выводит undefined? Потому что функция rush - ничего не возвращает. Если убрать все лишнее функцию можно записать так: function rush (filename){ (function(){...})() } Отсюда хорошо видно отсутствие return. Поэтому результат этой функции всегда - undefined. Решение "в лоб" - добавление return
function rush(filename) { return (function() { var res = filename.split(".") var b = res[res.lenght - 1] return b })() } console.log(rush("work.tt"))
При добавлении можно заметить, что все равно не работает. Так как допущена опечатка lenght -> length
function rush(filename) { return (function() { var res = filename.split(".") var b = res[res.length - 1] return b })() } console.log(rush("work.tt"))
Теперь видно, что самовызывающаяся функция не нужна
function rush(filename) { var res = filename.split(".") var b = res[res.length - 1] return b } console.log(rush("work.tt"))
Также, для получения последнего элемента массива можно использовать функцию pop
function rush(filename) { return filename.split(".").pop() } console.log(rush("work.tt"))