Страннейшая программа в JS

var a = 15;
var b = 97;

if (a=b) {
    console.log(a);
} else if (a>b) {
    console.log("a is greater");
} else {
    console.log("b is greater");
}

Ошибки нет, но выводит ВСЕГДА 97. Чуть покапав понял что каким-то образом a становится равным b. Это рас.

var g = Math.random();
var f = Math.random();
var h = Math.random();

if (h=f && g>=f) {
    console.log(a);
} else if (h>g) {
    console.log("c > a");
} else if (h>f) {
    console.log("c > b");
}

console.log(g,f,h);

Выводит 2 дробных числа (естественно от 0 до 1), и false снова без ошибок 0.10607589160082331 0.49579362287099293 false


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

Автор решения: DVD_AM

В певом примере должен был поставить 2 знака = в первом if(=присвоивает, ==сравнивает)

→ Ссылка
Автор решения: sombik
var a = 15;
var b = 97;

if (a === b) {  ////используйте так
    console.log(a);
} else if (a > b) {
    console.log("a is greater");
} else {
    console.log("b is greater");
}

var g = Math.random();
var f = Math.random();
var h = Math.random();

if (h === f && g >= f) {       ///и здесь тоже
    console.log(a);
} else if (h > g) {
    console.log("c > a");
} else if (h > f) {
    console.log("c > b");
}

console.log(g,f,h);

= присваивание

== сравнение ссылок объектов и значений

=== оператор строгого равенства проверяет равенство без приведения типов.

→ Ссылка