Почему переменная undefined в функции?

125
15 августа 2019, 15:30

Объясните, пожалуйста, почему в переменная a в функции makeDiv получает undefined?

        var a=10000; 
    (function makeDiv(a){ 
    		var b=a+1000; 
        var divsize = ((Math.random()*100) + 50).toFixed(); 
        var color = '#'+ Math.round(0xffffff * Math.random()).toString(16); 
        $newdiv = $('<div/>').css({ 
            'width':'50px', 
            'height':'50px', 
            'background-color': color 
        }); 
     
        var posx = (Math.random() * ($(document).width() - divsize)).toFixed(); 
        var posy = (Math.random() * ($(document).height() - divsize)).toFixed(); 
     
        $newdiv.css({ 
            'position':'absolute', 
            'left':posx+'px', 
            'top':posy+'px', 
            'display':'none' 
        }).appendTo( 'body' ).fadeIn(100).delay(1000).fadeOut(200, function(){ 
           $(this).remove(); 
           makeDiv(); 
        }); 
        console.log(a); 
    })();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Answer 1

Внутри функции у Вас переменная а - это параметр, который Вы не подаете в вызов функции.

var a = 10000; 
(function makeDiv(/* do not redefine "a" by declaring parameter of the same name */) { 
  var b = a + 1000; 
  console.log(a, b); 
})();

или

var a = 10000; 
(function makeDiv(a) { 
  var b = a + 1000; 
  console.log(a, b); 
})(a /* pass global "a" as parameter "a" - they may have different names */);

READ ALSO
Вынесение констант actions в отдельный файл

Вынесение констант actions в отдельный файл

Разбираю тему модульности в vuex на примере приложения с аутентификацией (статья, репозиторий на гитхабе), переписываю с нуля по-своему, сравниваю...

122
TypeScript не поддерживает import js файлов?

TypeScript не поддерживает import js файлов?

Вот такая вот штука - воспользовался TypeScript-Babel-Starter, Все шло хорошо, пока не появилась необходимость заimportмить js класс

108
Не срабатывает касание с первого раза на телефоне

Не срабатывает касание с первого раза на телефоне

Не сайте меню открывается при клике и наведении, за это отвечает этот код, на компе всё работает, на телефоне не срабатывает при первом касании,...

100