Size: a a a

JavaScript Noobs — сообщество новичков

2021 April 19

S

Sergei in JavaScript Noobs — сообщество новичков
console.log(typeof undefined == 'undefined'); // true
console.log(typeof false == 'undefined');// false
console.log(typeof true == 'undefined');// false
console.log(typeof '' == 'undefined');// false
console.log(typeof NaN == 'undefined');// false
console.log(typeof 0 == 'undefined');// false
console.log(typeof 1 == 'undefined');// false
console.log(typeof null == 'undefined');// false
console.log(typeof function(){} == 'undefined');// false
console.log(typeof new function(){} == 'undefined');// false
console.log(typeof {} == 'undefined');// false
console.log(typeof [] == 'undefined');// false
console.log(typeof new Symbol() == 'undefined');// false
источник

Б

Богдан in JavaScript Noobs — сообщество новичков
Здравствуйте. А не подскажите. Можно ли сделать так что бы IntersectionObserver срабатывал когда целевой объект видно на 50px (в примере на белой линии). Есть свойство threshold но там модно задать в %. А негативный margin не работает. https://codepen.io/boggddan/pen/KKaxyWB
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
источник

S

Sergei in JavaScript Noobs — сообщество новичков
К сожалению там нет ответа, даже нет косвенного ответе почему в typeof официальная документация нам предлагает использовать именно !== а не !=
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
вы хотя бы до середины статьи дочитали? там ответ на ваш вопрос чётко раскрывается
источник

S

Sergei in JavaScript Noobs — сообщество новичков
Спасибо, делаю вывод, что в официальной документации пример приведен с ошибкой.
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
официальной документации чего?
источник

S

Sergei in JavaScript Noobs — сообщество новичков
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Default_parameters

Пример №2
function multiply(a, b) {
 b = typeof b !== 'undefined' ?  b : 1;
 return a*b;
}

multiply(5, 2); // 10
multiply(5); // 5

Хотя правильно будет так
function multiply(a, b) {
 b = typeof b != 'undefined' ?  b : 1;
 return a*b;
}

multiply(5, 2); // 10
multiply(5); // 5
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
так правильно не будет
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
правильно всегда использовать === и !==
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
!= и прочие нестрогие операторы сравнения это баг дизайна языка программирования
источник

S

Sergei in JavaScript Noobs — сообщество новичков
Так я и спрашиваю в чем разница если разницы нет! :)
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
разница в том, что вы используете только строгое сравнение всегда, вы должны решать бизнес-логику, а не задумываться о синтаксисе
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
вы не должны задумываться над "о, вот тут typeof, наверное я могу использовать нестрогое сравнение"
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
когда можно использовать всегда строгое сравнение и не думать, а не выстрелите ли вы себе в ногу в каком-нибудь пограничном случае
источник

AK

Anton Karmanov in JavaScript Noobs — сообщество новичков
Строгое сравнение — это всегда сравнение по значению без приведения типов.

Нестрогое сравнение — это всегда сравнение с приведением типов, это означает сайд-эффект, а правил приведения около двух десятков (не могу сейчас найти все-все-все их на javascript.ru). Вы готовы учить наизусть все правила приведения типов? Я бы сказал, что никто не готов, если конечно человеку больше нечего делать или если он не пилит движок интепретатора JS
источник

S

Sergei in JavaScript Noobs — сообщество новичков
Понял. Спасибо за развернутый ответ.
Но я не согласен с вашей позицией.
Ваша позиция как я понял в том, что вы не будете изучать/углубляться в документацию в каких случаях оператор отработает так, а в каких он отработает иначе.
Вмето того чтобы изучить оператор на 100%. Вы просто не будете использовать этот оператор ВООБЩЕ.
источник

AP

Anton Permyakov in JavaScript Noobs — сообщество новичков
да
источник

А

Александр in JavaScript Noobs — сообщество новичков
А ещё явное всегда лучше неявного
источник

А

Александр in JavaScript Noobs — сообщество новичков
Есть такая штука - чистый код называется.
источник