CoffeeScript экзистенциальный оператор и это

Я заметил кое-что странное в компиляторе CoffeeScript и подумал, правильное ли это поведение или нет. Если это правильно, мне любопытно, почему есть разница ..

Учитывая следующий CoffeeScript:

if @myVar?
  alert myVar

Я ожидал, что он скомпилируется в JavaScript следующим образом:

if (typeof this.myVar !== "undefined" && this.myVar !== null) {
  alert(myVar);
}

Но вместо этого то, что выводит компилятор CoffeeScript, таково:

if (this.myVar != null) {
  alert(myVar);
}

Если я не ссылаюсь на этот (или любой другой родительский объект), CoffeeScript компилируется, как я и ожидал.

Это правильное поведение? Если так, почему это работает по-другому при использовании этого?

Редактировать:

Чтобы добавить немного больше разъяснений. Это происходит не только с этим, но и с любыми другими свойствами объектов. Например, если бы я заменил вышеуказанный CoffeeScript на то, что ниже, он все равно скомпилировался бы только с "! = Null" ...

if myVar.myProp?
  alert myVar

Ответы на вопрос(1)

Ваш ответ на вопрос