🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
10 messages
10 total messages Started by Romek Tue, 17 Nov 2015 14:40
Operator ||
#51599
Author: Romek
Date: Tue, 17 Nov 2015 14:40
16 lines
1981 bytes
Witam,

język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :

jQuery.fn.extend({
	offset: 
[...]
return {
 top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
 left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
[...]


jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.

Romek
Re: Operator ||
#51600
Author: Cezary Tomczyk
Date: Tue, 17 Nov 2015 16:20
23 lines
1884 bytes
W dniu 11/17/2015 o 3:40 PM, Romek pisze:
> Witam,
>
> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje
> znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o
> pomoc i wyjaśnienie. W funkcji jest zapis :
>
> jQuery.fn.extend({ offset: [...] return { top: box.top +
> (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
> left: box.left + (win.pageXOffset || docElem.scrollLeft) -
> (docElem.clientLeft || 0) [...]
>
>
> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub
> (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR
> zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego
> wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.

https://developer.mozilla.org/pl/docs/Web/JavaScript/Reference/Operators/Logical_Operators

-- 
Cezary Tomczyk
http://www.ctomczyk.pl/
Re: Operator ||
#51601
Author: nkab
Date: Wed, 18 Nov 2015 08:21
28 lines
2364 bytes
W dniu wtorek, 17 listopada 2015 15:40:55 UTC+1 użytkownik Romek napisał:
> Witam,
> 
> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :
> 
> jQuery.fn.extend({
> 	offset: 
> [...]
> return {
>  top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
>  left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
> [...]
> 
> 
> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.
> 
> Romek

Zamień sobie to na cyferki a wszystko ci się rozjaśni:

(win.pageYOffset || docElem.scrollTop)

alert(win.pageYOffset)  np. da 200
alert(docElem.scrollTop)  np. da 100

(200 or 100)

Andrzej.
Re: Operator ||
#51602
Author: Cezary Tomczyk
Date: Wed, 18 Nov 2015 09:11
38 lines
2507 bytes
W dniu 11/18/2015 o 9:21 AM, nkab@toya.net.pl pisze:
> W dniu wtorek, 17 listopada 2015 15:40:55 UTC+1 użytkownik Romek napisał:
>> Witam,
>>
>> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :
>>
>> jQuery.fn.extend({
>> 	offset:
>> [...]
>> return {
>>   top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
>>   left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
>> [...]
>>
>>
>> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.
>>
>> Romek
>
> Zamień sobie to na cyferki a wszystko ci się rozjaśni:
>
> (win.pageYOffset || docElem.scrollTop)
>
> alert(win.pageYOffset)  np. da 200
> alert(docElem.scrollTop)  np. da 100
>
> (200 or 100)

Nie. Lewa strona jest konwertowana do typu Boolean i jeśli jest true, to 
jest zwracana jego wartość. W przeciwnym wypadku prawa strona jest zwracana.

W tym przypadku Boolean(200) daje true, a więc 200 jest zwracane. Gdyby 
win.pageYOffset było undefined, to Boolean(undefined) daje false i prawa 
strona jest zwracana.

-- 
Cezary Tomczyk
http://www.ctomczyk.pl/
Re: Operator ||
#51603
Author: nkab
Date: Wed, 18 Nov 2015 09:30
46 lines
3154 bytes
W dniu środa, 18 listopada 2015 10:11:38 UTC+1 użytkownik Cezary Tomczyk napisał:
> W dniu 11/18/2015 o 9:21 AM, nkab@toya.net.pl pisze:
> > W dniu wtorek, 17 listopada 2015 15:40:55 UTC+1 użytkownik Romek napisał:
> >> Witam,
> >>
> >> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :
> >>
> >> jQuery.fn.extend({
> >> 	offset:
> >> [...]
> >> return {
> >>   top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
> >>   left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
> >> [...]
> >>
> >>
> >> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.
> >>
> >> Romek
> >
> > Zamień sobie to na cyferki a wszystko ci się rozjaśni:
> >
> > (win.pageYOffset || docElem.scrollTop)
> >
> > alert(win.pageYOffset)  np. da 200
> > alert(docElem.scrollTop)  np. da 100
> >
> > (200 or 100)
> 
> Nie. Lewa strona jest konwertowana do typu Boolean i jeśli jest true, to 
> jest zwracana jego wartość. W przeciwnym wypadku prawa strona jest zwracana.
> 
> W tym przypadku Boolean(200) daje true, a więc 200 jest zwracane. Gdyby 
> win.pageYOffset było undefined, to Boolean(undefined) daje false i prawa 
> strona jest zwracana.
> 
> -- 
> Cezary Tomczyk
> http://www.ctomczyk.pl/

Dzięki.

Minie bardziej chodziło o to jak pytający praktycznie
powinien analizować kod i jak najłatwiej uzyska odpowiedź na warunek.

Andrzej.
Re: Operator ||
#51604
Author: zpksoft
Date: Wed, 18 Nov 2015 14:47
56 lines
3743 bytes
W dniu środa, 18 listopada 2015 10:30:06 UTC+1 użytkownik nk...@toya.net.pl napisał:
> W dniu środa, 18 listopada 2015 10:11:38 UTC+1 użytkownik Cezary Tomczyk napisał:
> > W dniu 11/18/2015 o 9:21 AM, nkab@toya.net.pl pisze:
> > > W dniu wtorek, 17 listopada 2015 15:40:55 UTC+1 użytkownik Romek napisał:
> > >> Witam,
> > >>
> > >> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :
> > >>
> > >> jQuery.fn.extend({
> > >> 	offset:
> > >> [...]
> > >> return {
> > >>   top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
> > >>   left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
> > >> [...]
> > >>
> > >>
> > >> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.
> > >>
> > >> Romek
> > >
> > > Zamień sobie to na cyferki a wszystko ci się rozjaśni:
> > >
> > > (win.pageYOffset || docElem.scrollTop)
> > >
> > > alert(win.pageYOffset)  np. da 200
> > > alert(docElem.scrollTop)  np. da 100
> > >
> > > (200 or 100)
> > 
> > Nie. Lewa strona jest konwertowana do typu Boolean i jeśli jest true, to 
> > jest zwracana jego wartość. W przeciwnym wypadku prawa strona jest zwracana.
> > 
> > W tym przypadku Boolean(200) daje true, a więc 200 jest zwracane. Gdyby 
> > win.pageYOffset było undefined, to Boolean(undefined) daje false i prawa 
> > strona jest zwracana.
> > 
> > -- 
> > Cezary Tomczyk
> > http://www.ctomczyk.pl/
> 
> Dzięki.
> 
> Minie bardziej chodziło o to jak pytający praktycznie
> powinien analizować kod i jak najłatwiej uzyska odpowiedź na warunek.
> 
> Andrzej.

false or true <- da true czyli prawą stronę
true or false <- da true czyli lewą stronę.

Czyli: wynik a or b zwróci wartość przwdziwą. A ściślej: pierwszą prawdziwą, tzn. jeżeli a jest true i b jest true to zwróci a. Jest tak dlatego, że działanie true or cokolwiek zawsze da true więc po co sprawdzać co jest pod cokolwiek.

(Oczywiście Cezary Tomczyk ma rację)

Paweł
Re: Operator ||
#51605
Author: nkab
Date: Thu, 19 Nov 2015 09:55
66 lines
4149 bytes
W dniu środa, 18 listopada 2015 15:47:04 UTC+1 użytkownik zpksoft napisał:
> W dniu środa, 18 listopada 2015 10:30:06 UTC+1 użytkownik nk...@toya.net.pl napisał:
> > W dniu środa, 18 listopada 2015 10:11:38 UTC+1 użytkownik Cezary Tomczyk napisał:
> > > W dniu 11/18/2015 o 9:21 AM, nkab@toya.net.pl pisze:
> > > > W dniu wtorek, 17 listopada 2015 15:40:55 UTC+1 użytkownik Romek napisał:
> > > >> Witam,
> > > >>
> > > >> język javascript jest mi zupełnie obcy. Pewne potrzebne mi informacje znalazłem bibliotece jQuery. Ponieważ nie rozumiem zapisu proszę o pomoc i wyjaśnienie. W funkcji jest zapis :
> > > >>
> > > >> jQuery.fn.extend({
> > > >> 	offset:
> > > >> [...]
> > > >> return {
> > > >>   top: box.top + (win.pageYOffset || docElem.scrollTop)-(docElem.clientTop || 0),
> > > >>   left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0)
> > > >> [...]
> > > >>
> > > >>
> > > >> jak jest wartość wyrażenia (win.pageYOffset || docElem.scrollTop) lub (docElem.clientTop || 0). Z dokumentacji JS wynika, że operator OR zwraca wartości TRUE, FALSE i nie mogę tego dopasować do powyższego wyrażenie. Czego nie wiem. Proszę o krótkie wyjaśnienie.
> > > >>
> > > >> Romek
> > > >
> > > > Zamień sobie to na cyferki a wszystko ci się rozjaśni:
> > > >
> > > > (win.pageYOffset || docElem.scrollTop)
> > > >
> > > > alert(win.pageYOffset)  np. da 200
> > > > alert(docElem.scrollTop)  np. da 100
> > > >
> > > > (200 or 100)
> > > 
> > > Nie. Lewa strona jest konwertowana do typu Boolean i jeśli jest true, to 
> > > jest zwracana jego wartość. W przeciwnym wypadku prawa strona jest zwracana.
> > > 
> > > W tym przypadku Boolean(200) daje true, a więc 200 jest zwracane. Gdyby 
> > > win.pageYOffset było undefined, to Boolean(undefined) daje false i prawa 
> > > strona jest zwracana.
> > > 
> > > -- 
> > > Cezary Tomczyk
> > > http://www.ctomczyk.pl/
> > 
> > Dzięki.
> > 
> > Minie bardziej chodziło o to jak pytający praktycznie
> > powinien analizować kod i jak najłatwiej uzyska odpowiedź na warunek.
> > 
> > Andrzej.
> 
> false or true <- da true czyli prawą stronę
> true or false <- da true czyli lewą stronę.
> 
> Czyli: wynik a or b zwróci wartość przwdziwą. A ściślej: pierwszą prawdziwą, tzn. jeżeli a jest true i b jest true to zwróci a. Jest tak dlatego, że działanie true or cokolwiek zawsze da true więc po co sprawdzać co jest pod cokolwiek.
> 
> (Oczywiście Cezary Tomczyk ma rację)
> 
> Paweł

a=0;
//var a;                  // undefined
b=100;

//alert(''+Boolean(a));
alert('ok...'+(a||b));    // 100

Andrzej.
Re: Operator ||
#51606
Author: zpksoft
Date: Thu, 19 Nov 2015 13:27
14 lines
1886 bytes
W dniu czwartek, 19 listopada 2015 10:55:22 UTC+1 użytkownik nk...@toya.net.pl napisał:
...> 
> a=0;
> //var a;                  // undefined
> b=100;
> 
> //alert(''+Boolean(a));
> alert('ok...'+(a||b));    // 100
> 
> Andrzej.

Ale gdy a!=0 to zwróci a. Bo odpowiednikiem wartości boolean==false są 0, null, undefined itp.

Paweł
Re: Operator ||
#51607
Author: nkab
Date: Fri, 20 Nov 2015 07:54
22 lines
2495 bytes
W dniu czwartek, 19 listopada 2015 14:27:26 UTC+1 użytkownik zpksoft napisał:
> W dniu czwartek, 19 listopada 2015 10:55:22 UTC+1 użytkownik nk...@toya.net.pl napisał:
> ...> 
> > a=0;
> > //var a;                  // undefined
> > b=100;
> > 
> > //alert(''+Boolean(a));
> > alert('ok...'+(a||b));    // 100
> > 
> > Andrzej.
> 
> Ale gdy a!=0 to zwróci a. Bo odpowiednikiem wartości boolean==false są 0, null, undefined itp.
> 
> Paweł

Ale tu, w przykładzie pytającego, najbardziej istotna była kwestia
co zwróci warunek, bo wyglądał na bardzo enigmatyczny, a po podłożeniu
cyferek wszystko stało się jasne, zaś dyskusja nie pozostawiła pytającemu
już żadnych wątpliwości o czym pewnie się dowiemy (albo nie).

Andrzej.
Re: Operator ||
#51608
Author: zpksoft
Date: Fri, 20 Nov 2015 13:04
27 lines
2617 bytes
W dniu piątek, 20 listopada 2015 08:54:13 UTC+1 użytkownik nk...@toya.net.pl napisał:
> W dniu czwartek, 19 listopada 2015 14:27:26 UTC+1 użytkownik zpksoft napisał:
> > W dniu czwartek, 19 listopada 2015 10:55:22 UTC+1 użytkownik nk...@toya.net.pl napisał:
> > ...> 
> > > a=0;
> > > //var a;                  // undefined
> > > b=100;
> > > 
> > > //alert(''+Boolean(a));
> > > alert('ok...'+(a||b));    // 100
> > > 
> > > Andrzej.
> > 
> > Ale gdy a!=0 to zwróci a. Bo odpowiednikiem wartości boolean==false są 0, null, undefined itp.
> > 
> > Paweł
> 
> Ale tu, w przykładzie pytającego, najbardziej istotna była kwestia
> co zwróci warunek, bo wyglądał na bardzo enigmatyczny, a po podłożeniu
> cyferek wszystko stało się jasne, zaś dyskusja nie pozostawiła pytającemu
> już żadnych wątpliwości o czym pewnie się dowiemy (albo nie).
> 
> Andrzej.

OK, napisałem to tak dla porządku bo pytający sam przyznał że nie zna JS, więc aby nie błądził :)

Paweł
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads