/ / Parametry przekazują wartość vs parametry jako zmienne lokalne w JavaScript [duplikat] - javascript, logika

Parametry przechodzą przez wartość vs parametry jako zmienne lokalne w Javascript [duplicate] - javascript, logic

Powiedzmy na przykład, że masz funkcję jak poniżej

var value = 1;
function test(myVar) {
myVar = 2
}
test(value)
console.log(value)
//prints out 1

Przeczytałem, że w funkcjach JS dzieją się dwie rzeczy.

1) JavaScript przekazuje prymitywy według wartości. Kiedy „wartość” jest przekazywana jako argument do testu (), tworzona jest kopia niezależna od zmiennej globalnej „wartość”. Dlatego „myVar” jest zmienną odrębną od „wartości”

2) Parametry w funkcjach JS są tak naprawdę tylko lokalnymi zmiennymi dla funkcji. Zatem parametr „myVar” ma zasięg tylko w funkcji test ().

Wiem, że obie instrukcje są prawdziwe, ale która z nich powoduje wydrukowanie pliku console.log (wartość) 1

Odpowiedzi:

0 dla odpowiedzi № 1

Oba te stwierdzenia są prawdziwe. Powodem, dla którego drukuje 1, jest to, że, jak wspomniałeś, parametry są przekazywane według wartości. Jako taka, wartość twojej zmiennej value nigdy się nie zmienia.

Chociaż punkt # 2 jest również prawdziwy, to tak naprawdę nie ma wiele wspólnego z tym zachowaniem. Jest bardziej związany z robieniem czegoś takiego, jak używanie myVar poza zakresem tej funkcji.


0 dla odpowiedzi nr 2

Oba stwierdzenia są poprawne

Sprawdź ten adres URL z Mozilli Zmienny zakres w JavaScript