Maison > Questions et réponses > le corps du texte
Exemple :
let x = 99;
function foo(p = x + 1) {
console.log(p);
}
foo() // 100
x = 100;
foo() // 101
Cependant, si je modifie légèrement les paramètres pour :
let x = 99;
function foo(x = x + 1) {
console.log(x);
}
foo() // NaN
x = 100;
foo() // NaN
Pourquoi est-il affiché comme NaN ? Quels changements invisibles se sont produits au milieu ? Si vous le savez, pouvez-vous me le dire ?
漂亮男人2017-05-19 10:46:17
let x = 99;
function foo(p = x + 1) {
console.log(p);
}
// 相当于
let x = 99;
function foo () {
let p;
p = x + 1;
console.log(p); // -> 100
}
Le code suivant est équivalent à
let x = 99;
function foo(x = x + 1) {
console.log(x);
}
// 相当于
let x = 99;
function foo() {
let x; // 此时x = undefined;
x = undefined + 1;
console.log(x); // -> NaN
}
C'est-à-dire que le x dans foo(x = x + 1) n'a rien à voir avec le x à l'extérieur. Il est défini à l'intérieur de la fonction par vous.