ES6 js ключевые слова как парам точное поведение - PullRequest
3 голосов
/ 28 июня 2019

У меня есть код, который, как ожидается, вернет 'undefined' или любую ошибку, но выдает результат, как уже упоминалось.

let i = (x, c) => {
    c(x);
};

i(20, (undefined) => {
    let j = undefined;
    console.log(j);
});


function y(undefined) {
    let a = undefined;
    console.log(a);
}
y(90);

Как зарезервированные слова работают и изменяют поведение, если используются в аргументах функции?

Ответы [ 2 ]

4 голосов
/ 28 июня 2019

undefined не является зарезервированным словом.

Это глобальная переменная, доступная только для чтения.

Ничто не мешает вам определить другую переменную с тем же именем в более узкой области.

3 голосов
/ 28 июня 2019

undefined является не зарезервированным словом, как вы можете видеть здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords.

В вашем сценарии undefined фактически содержит значение обратного вызова, которое составляет 20 впервый случай и 90 во второй.

Например, если вы хотите присвоить значение undefined для объема j или a, вы можете использовать void 0.Дополнительную информацию о том, как работает void, можно найти здесь (также, void на самом деле является зарезервированным словом в javascript): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void

let i = (x, c) => {
    c(x);
};

i(20, (undefined) => {
    let j = void 0;
    console.log(j);
});


function y(undefined) {
    let a = void 0;
    console.log(a);
}
y(90);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...