В классе объявить не возможно, в объекте работает

class test {
    constructor() {
        (el = 2323);
        console.log(el);
    }
}
window.addEventListener('DOMContentLoaded', _ => new test());


window.addEventListener('DOMContentLoaded', _ => ({
    int: function() {
        (m = 333);
        console.log(m);
    }
}).int())

Почему в классе если необходимо занести данные в переменную, предварительно не объявляя но обрамляя в скобки. Не работает, а с объектом это работает...

В некоторых случаях, сразу заношу данные в переменную заведомо в скобках. Когда тутже необходимо к примеру повесить слушатель и еще обратиться к переменной в последующем.

Возможно запустить класс также как объект запускаю, не люблю лишних строчек...


Ответы (1 шт):

Автор решения: Alexander Lonberg

Подозреваю что классы по умолчанию работают в строгом режиме. Второй вариант так же должен вызывать ошибку, если переменная заранее не объявлена.

Вот пример:

Работает

function test() {
  ({
    int: function() {
      (m = 333);
      console.log(m);
    }
  }).int()
}
test()

Не работает(use strict)

function testStrict() {
  'use strict';
  ({
    int: function() {
      (m = 333);
      console.log(m);
    }
  }).int()
}
testStrict()

→ Ссылка