2016-12-30 32 views
7

byłem przechodzącej przez ES6 zakładając, że będzie to łatwe, aby przejść do ECMAScript 2017Znaczenie === z wywołania funkcji

podczas przechodzenia przez, mam mylić o tym kodzie

function f (x, y = 7, z = 42) { 
    return x + y + z 
} 
f(1) === 50 

Który ma odpowiednik ES5

function f (x, y, z) { 
    if (y === undefined) 
     y = 7; 
    if (z === undefined) 
     z = 42; 
    return x + y + z; 
}; 
f(1) === 50; 

Zrozumiałem domyślną rzecz parametru z niego.

Ale co f(1)===50 znaczy w obu kodów? Co z tego korzysta?

Oto kolejny przykład

function f (x, y, ...a) { 
    return (x + y) * a.length 
} 
f(1, 2, "hello", true, 7) === 9 

Co f(1, 2, "hello", true, 7) === 9 oznacza?

Rozumiem, że === dla porównania między LHS i RHS operatora, w tym typ obu, a nie tylko wartość.

Ale dlaczego został użyty w ten sposób?

Prosimy o wyjaśnienie sposobu użytkowania.

To jest link, skąd to otrzymałem. http://es6-features.org/#RestParameter

+0

Operator ['===' (http://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons) w żadnym wypadku nie jest nowy , istnieje w JavaScript od początku. –

+0

Jeśli masz na myśli "dlaczego dokonujesz porównania i nie przypisujesz go do zmiennej lub używasz jej w pętli", prawdopodobnie jest to tylko kod testowy wyświetlany w konsoli. –

+0

to tylko porównanie z ich wartością i typem danych: – Beginner

Odpowiedz

1

Według mnie prawie weszliście we właściwy sposób.

Po prostu wywołaj tę funkcję wraz z potrójnym znakiem równości w stanie if.

if (f(1) === 50){ 
    console.log(true); 
} 
else { 
    console.log(false); 
} 

To wszystko.

Potrójny równy jest po prostu operatorem porównania. A wywołanie funkcji po jednej stronie potrójnej równej operatorowi oznacza wartość zwróconą przez tę funkcję.

Dlatego po prostu traktuj to jak każdy inny comparison operator w javascript.

Proszę, popraw mnie, jeśli źle zinterpretowałem twoje pytanie.!

Wszystkiego najlepszego!

2

W f(1)===50 sprawdza czy f(1) jest równa 50. Jeżeli wartości wyrażenia z true, to wynikiem tego wyrażenia jest true. W przeciwnym razie jest to false. Ponieważ nie przypisujesz tej wartości do zmiennej, tak jak jest, nie możesz jej użyć nigdzie.

Formalnie === nazywa operator ścisłej równości. Aby uzyskać więcej informacji, proszę spojrzeć na: here.

+0

Możesz go używać w konsoli: https: //i.imgur. com/zqeoEWl.png –

+0

@ ÁlvaroGonzález można zobaczyć w konsoli, ale nie można użyć tej wartości w dowolnym miejscu. To jest mój punkt widzenia. W konsulu po prostu widać wynik oceny. – Christos

+0

Prawidłowo. Jak zauważył Maxx, nie ma w tym celu zastosowania kodu produkcyjnego. Ale może pomóc w rozwoju. –

3

Ten surowy test porównania czy funkcja f(x,y,z), po wywołaniu z wartością parametru x 1 zwraca wartość 50. Byłoby to ważne, gdy wartości parametrów domyślnych dodana do wartości x wynosi 7 i 42.

Te wywołania funkcji i porównania służą wyłącznie do podania przykładów użycia i ewentualnie testowania przykładów funkcji, które wywołują.

Kod

function f (x, y, ...a) { 
    return (x + y) * a.length 
} 
f(1, 2, "hello", true, 7) === 9 

jest przykładem dłuższy przenoszenia parametrów. Właściwość długości zmiennej ...a równa się 3, dlatego test potwierdza liczbę parametrów przekazanych do funkcji po x i y.

2

Chodzi o to, że jego przykładowy kod. Pokazują, że wyniki funkcji wywołanej tymi argumentami są równe. Samo wyrażenie nie zrobi niczego, chyba że wkleisz je do konsoli.

Mogli równie dobrze wykorzystać komentarz.

f(1, 2, "hello", true, 7) // 9 
1

Tożsamość (===) operator zachowuje się identycznie do równości (==) wyjątkiem operatora bez konwersji typu jest zrobione, a typy musi być taka sama, aby uznać równy.

W twoim przykładzie, jeśli wstawisz wszystkie trzy argumenty typu liczbowego, otrzymasz liczbę jako wynik, a następnie, aby sprawdzić, czy wynik ma poprawny typ, musisz użyć operatora ===.

Może ten przykład będzie bardziej wyraźne w przypadku:

f(1,1,1) // returns 3 - numeric type 
f(1,1,"1") // returns "111" - string type 
//so now if you will write 
f(1,1,1) == "3" // true 
f(1,1,1) == 3 // true 
f(1,1,1) === "3" // false, because the result is 3 not "3" as string. 
f(1,1,1) === 3 // true 
f(1,1,"1") == "111" // true 
f(1,1,"1") == 111 // true 
f(1,1,"1") === "111" // true 
f(1,1,"1") === 111 // false, because the result is string "111" not 111 number. 

Więc w twoim przypadku to === operator jest używany, aby dokładnie sprawdzić, czy wynik jest naprawdę to, co można oczekiwać, że będzie.

Powiązane problemy