Автор Тема: JavaScript може би не разбира добре логическите променливи True и False  (Прочетена 7603 пъти)

3p0

  • Напреднали
  • *****
  • Публикации: 354
    • Профил
Една функция на JavaScript сравнява две аналогични групи числови променливи дали са еднакви и връща False, понеже не са еднакви. Резултата от функцията го получава една Boolean променлива b, чиято стойност също е False ....
И накрая за капак ми изскача един алерт прозорец, точно защото не трябва да изскочи ?
Код:
        if (b=true)
        {
          window.alert("TRUE");
        }
Или аз съм напълно луд или JavaScript е малко лудичък ?
Активен

MX Linux version 18 "Continuum"
PC: Intel® Celeron® CPU G540 2.50GHz; MB=Gigabyte GA-H61M-S2V-B3 rev.1.0; RAM=16Гб DDR3.

spec1a

  • Напреднали
  • *****
  • Публикации: 3852
    • Профил
   Не трябва ли да се сравняват с "==" т.е.
if (b==true)   
{
     window.alert("TRUE");
}
Активен

3p0

  • Напреднали
  • *****
  • Публикации: 354
    • Профил
   Не трябва ли да се сравняват с "==" т.е.
if (b==true)   
{
     window.alert("TRUE");
}
Оооооооооо, слава Богу, аз съм луд, а JavaScript си е напълно нормален ;D
Активен

MX Linux version 18 "Continuum"
PC: Intel® Celeron® CPU G540 2.50GHz; MB=Gigabyte GA-H61M-S2V-B3 rev.1.0; RAM=16Гб DDR3.

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Или само  if(b){ ... }  ;D

3p0

  • Напреднали
  • *****
  • Публикации: 354
    • Профил
Или само  if(b){ ... }  ;D
Аз така съм свикнал от Паскал (Делфи, Лазарус).
Ако тази проверка работи, ще правя по-малко грешки !!!
Сега ще я проверя .... Ураааааа - работи по този опростен начин !
« Последна редакция: Aug 30, 2016, 22:33 от 3p0 »
Активен

MX Linux version 18 "Continuum"
PC: Intel® Celeron® CPU G540 2.50GHz; MB=Gigabyte GA-H61M-S2V-B3 rev.1.0; RAM=16Гб DDR3.

3p0

  • Напреднали
  • *****
  • Публикации: 354
    • Профил
Все пак мисля, че хванах в крачка JavaScript, но не съм сигурен;
Предполагам, че ако от рекурсивна функция има обръщение към друга функция, след като се върне резултата в рекурсивната функция - тя забравя да прави рекурсии.
Това го установих и като върнах кода от другата функция в тялото на рекурсивната - без обръщение към друга функция, тя си работи рекурсивно :)
« Последна редакция: Aug 30, 2016, 22:40 от 3p0 »
Активен

MX Linux version 18 "Continuum"
PC: Intel® Celeron® CPU G540 2.50GHz; MB=Gigabyte GA-H61M-S2V-B3 rev.1.0; RAM=16Гб DDR3.

pennywise

  • Гост
Джабата е малко объркващ език. за мое нещастие в последната година е извън контрол.
Има също и оператор ===
Понеже е "weakly typed" език служи за проверка дали променливата има същата стойност и е от същия тип.
http://www.w3schools.com/js/js_operators.asp
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Оператора с три знака равно го има в един билюк езици. Нищо специфично за жабешкият низ.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
   Не трябва ли да се сравняват с "==" т.е.
if (b==true)   
{
     window.alert("TRUE");
}
Оооооооооо, слава Богу, аз съм луд, а JavaScript си е напълно нормален ;D


за да не стават такива проблеми, може просто да е техническа грешка и неправилно чукване винаги обръщай сравняването, така че числото да стои първо а променливата втора:

if (true==b) 
или на на ПХП: if ( 5==$b)

ако случайно си го сгрешил с едно равно - ще избие с грешка, щото не може на число да присвоиш променлива   if ( 5=$b)
Аз винаги така правя и това простичко правило спестява много главоболия.

« Последна редакция: Aug 31, 2016, 11:20 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

3p0

  • Напреднали
  • *****
  • Публикации: 354
    • Профил
....
за да не стават такива проблеми, може просто да е техническа грешка и неправилно чукване винаги обръщай сравняването, така че числото да стои първо а променливата втора:

if (true==b) 
или на на ПХП: if ( 5==$b)

ако случайно си го сгрешил с едно равно - ще избие с грешка, щото не може на число да присвоиш променлива   if ( 5=$b)
Аз винаги така правя и това простичко правило спестява много главоболия.
Този начин за проверка ми харесва и ще го прилагам от днес нататък ....
Активен

MX Linux version 18 "Continuum"
PC: Intel® Celeron® CPU G540 2.50GHz; MB=Gigabyte GA-H61M-S2V-B3 rev.1.0; RAM=16Гб DDR3.

zxz

  • Напреднали
  • *****
  • Публикации: 615
  • Distribution: Linux Mint 18.2
  • Window Manager: XFCE
    • Профил
В JS има една подробност относно сравняването. Най-добре е да използваш === за сравняване, може и == но трябва да си убеден че нещата които сравняваш са един и същи тип, в противен случай ако напишеш:
var a = 5;
a == '5' ще ти върне true, което не е вярно, защото '5' е стринг, не число
a === '5' връща false както си му е реда.

П.С. Сега видях, че сте го писали вече. Но нищо, както казват - повторението майка на знанието :D
« Последна редакция: Sep 01, 2016, 20:05 от zxz »
Активен

hristov82

  • Участници
  • ***
  • Публикации: 4
    • Профил
може да погледнеш в Интернет и за truthy, falsy :)
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Microsoft True Type Core Fonts
Настройка на програми
Acidtrance 1 2112 Последна публикация Aug 26, 2003, 13:13
от
true transparency
Настройка на програми
Halo 7 3735 Последна публикация Nov 11, 2004, 01:56
от
Sure lock: a true poo story
Хумор
divak 1 3097 Последна публикация Nov 29, 2007, 14:03
от VladSun
True story ;)
Хумор
VladSun 2 2693 Последна публикация Dec 06, 2007, 20:06
от task_struct
ПРЕМЕСТЕНО: JavaScript може би не разбира добре логическите променливи True и False
Настройка на програми
neter 0 1268 Последна публикация Sep 04, 2016, 18:26
от neter