Как правильно использовать сферу? - PullRequest
0 голосов
/ 15 мая 2019

Я не уверен, когда нужно помещать переменную в начало, а не в функцию.

Я пытался поместить переменную вверх, а иногда и внутри функции. Однако в некоторых случаях он не всегда внутри, как в этом случае.

function transformFirstAndLast(array){
    var first = array[0];
    var last = array[array.length-1];
    var squid = {};

    squid[first] = last;
    return squid;
}

против

var first = array[0];
var last = array[array.length-1];
var squid = {};

function transformFirstAndLast(array){
    squid[first] = last;
    return squid;
}

первый работает. Тем не менее, я думал, что вы можете получить доступ к переменным, поскольку это глобальная область? Я запутался, почему не работает второй?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Давайте возьмем ваш последний пример:

var first = array[0];
var last = array[array.length-1];
var squid = {};

function transformFirstAndLast(array){
    squid[first] = last;
    return squid;
}

В строке 1 array равно undefined, поскольку оно не находится в текущей области видимости. Переменная array существует только в методе transformFirstAndLast. Если бы вы вызвали этот метод, что бы произошло:

  • squid существует: {}
  • first и last оба undefined
  • Мы присваиваем объекту undefined (= first) объект squid со значением undefined (= last)
  • Возвращаем { undefined: undefined }

Вы объявляете переменные там, где они вам нужны. В этом случае first и last имеют смысл только если у вас есть array, поэтому внутри метода.

0 голосов
/ 15 мая 2019

Проблема со вторым кодом заключается в том, что вы пытаетесь получить доступ к чему-то, что не существует:

var first = array[0]; // <-- trying to access 'array'
var last = array[array.length-1]; // <-- trying to access 'array'
var squid = {};

function transformFirstAndLast(array){ // <-- 'array' is an argument of this function, and therefore only exists inside of the function
    squid[first] = last;
    return squid;
}

В JavaScript вы можете получить доступ к переменным, которые объявлены в области, в которой вы находитесь, иваши родители.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...