Я знаю о подъеме.
Но мне интересно, какое рекомендуемое решение для глобального массива, например, работает как таблица поиска. Массив, который вы бы объявили постоянным и сделать глобальным на большинстве языков.
Подобно:
var lookup = ["010101010", "0100101010", "01010101010", "etc"];
function foo() {
// lookup is undefined
}
Наверное, я мог бы передать его. Или сделать его частью window.document. Или какой-то трюк с этим, что я не совсем понимаю. Какой лучший способ сделать это?
Изменить: Хорошо, после прочтения комментариев, теперь я понимаю, что проблема, которую я испытывал, не была вызвана подъемом. В моем коде была и другая проблема. Он работает сейчас. Спасибо, что поняли это.
Просто убедитесь, что вы объявляете lookup
до foo
функции foo
. См. Следующий фрагмент. Если вы объявите его после foo
, вы получите ошибку undefined
.
var lookup = ["010101010", "0100101010", "01010101010", "etc"];
foo();
function foo() {
console.log(lookup);
}
undefined
.
Если вы хотите сохранить некоторые статические данные, используйте статические методы:
class CONSTANT {
/**
* Public method that will return a new array you can manipulate
*
* It different of this.MY_CONSTANT = [X, Y, Z];
*
* Because accessing this.MY_CONSTANT will gives you an access to
* the same element (if you modify it, it will get
* modified for the next use of it)
*/
static get MY_CONSTANT() {
return [
'010101010',
'0100101010',
'01010101010',
];
}
}
Для доступа:
CONSTANT.MY_CONSTANT
Ps: Это требует ES6
class CONSTANT {}
не class CONSTANT() {}
lookup
не определен в этой функции, если вы определяетеlookup
перед вызовомfoo()
.