объяснить вывод в js - PullRequest
       0

объяснить вывод в js

2 голосов
/ 14 февраля 2020

У меня проблема с кодом ниже:

let a = 13;

function printA() {
  let a = 19;
  console.log(this.a);
}
let obj = {
  a: 10,
  fun: function() {
    console.log(this.a);
  }
};
let obj2 = {
  a: 20
};
let x = obj.fun;
x();

Кто-нибудь может сказать, почему печать не определена? Он печатает 13, когда мы удаляем let из let a = 13

1 Ответ

0 голосов
/ 14 февраля 2020

Нет a для вашего x для извлечения, поэтому вы получаете undefined.

let obj = {
    a: 10,
    fun: function () {
        console.log(this.a);
    }
};

let x = obj.fun;
x();

Ваш x указывает на function как obj.fun , Но obj.fun.x не существует, поэтому это приведет к undefined.

Попробуйте следующее:

let obj = {
    a: 10,
    fun: function () {
        console.log(this.a);
    }
};

let x = obj;
x.fun();

или

let obj = {
    fun: function () {
        this.a = 10;
        console.log(this.a);
    }
};

let x = obj.fun;
x();

Они оба приведут к 10 как вывод.

Оба эти примера имеют свойство x в x.

ПРИМЕЧАНИЕ. Если сделать let a = 10 в функции fun, вы не получите результат this.a потому что такое объявление работает как объявление параметра private в C / JAVA et c.

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