почему передача var в функцию делает эту переменную неизменной внутри? - PullRequest
0 голосов
/ 12 сентября 2018

Я новичок в js и хочу понять разницу между переменной x в этих трех случаях и почему третий случай в этом коде дает мне x = 10, все еще в замешательстве

      var x = 10;
      function test(){
            var x = 15;
      }
      test();
      console.log(x)// return 10

      ///////////////////////////
      var x = 10;
      function test(){
             x = 15;
      }
      test();
      console.log(x)// return 15

      ////////////////////////////
      var x = 10;
      function test(x){
             x = 15;
      }
      test();
      console.log(x)// return 10

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018
var x = 10;
function test(){
  var x = 15;
}

новый x был создан в функции scope

var x = 10;
function test(){
  x = 15;
}

x относятся к внешнему объему

var x = 10;
function test(x){
  x = 15;
}

Примитивные параметры (например, число) передаются в функции значение; значение передается функции, но если функция изменяет значение параметра, это изменение не отражается глобально или в вызывающей функции.

MDN

0 голосов
/ 12 сентября 2018

Это потому, что х передается по значению (а не по ссылке).Смотрите это для более подробного объяснения: http://jasonjl.me/blog/2014/10/15/javascript/

...