W konsoli przeglądarki, jeśli wpisuję var x=10
, pokazuje ona undefined
, a jeśli wpiszę: x=10
, pokaże ona 10
. Obaj wykonują to samo zadanie, jaka jest różnica? Nie pytam o różnicę między używaniem var i nie używaniem var?Jaka jest różnica między var x = 10 a x = 10, gdy jest wpisana w konsoli przeglądarki?
Odpowiedz
Jesteś w konsoli przeglądarki, dzięki czemu są alerady w zakresie globalnym i z lub bez var nie mają wpływu na przechowywanie zmiennej:
Jednak =
jest operatorem, który powrót s wartość przypisana, tak a = 1
oceni na 1, a zobaczysz 2
gdy wpisałeś b = 2
. var
nic nie zwracaj, to nie jest wyrażenie.
Być może niektóre odniesienia: [* semantyka wykonawcza przydziału przydziału *] (http://www.ecma-international.org/ecma-262/6.0/#sec-assignment-operators-runtime-semantics-evaluation) - wyrażenie przypisania zwraca wartość prawej ręki. [* semantyka środowiska wykonawczego zmiennej deklaracji *] (http: // www.ecma-international.org/ecma-262/6.0/#sec-variable-statement-runtime-semantics-evaluation)- if succeed, zwraca * undefined *. – RobG
var x = 10; ustawia wartość dla bieżącego zakresu (funkcja wewnętrzna jako przykład).
x = 10; ustawia wartość dla zasięgu globalnego, dzięki czemu jest dostępna wszędzie.
w konsoli przeglądarki –
Wiem, ale to nie ma znaczenia. Możesz również wprowadzać funkcje wewnątrz konsoli za pomocą zmiennych. W tym przypadku zasięg konsoli przeglądarki jest taki sam, jak zasięg globalny, więc nie ma znaczenia. – seahorsepip
Brakowało ci punktu pytania. OP pyta, dlaczego konsola odpowiada "niezdefiniowanym" w jednym przypadku, a "10" w drugim. – nnnnnn
Jeśli zmienna jest używana w funkcji lub innym zasięgu nieglobalnym, zmienna nie jest zmienną globalną. Jeśli zmienna var nie jest używana przed nazwą zmiennej, utworzyłeś zmienną globalną.
/
/ These are both globals
var foo = 1;
bar = 2;
function()
{
var foo = 1; // Local
bar = 2; // Global
// Execute an anonymous function
(function()
{
var wibble = 1; // Local
foo = 2; // Inherits from scope above (creating a closure)
moo = 3; // Global
}())
}
Jeśli nie robisz zadanie to trzeba użyć var:
var x; // Declare x
WYJAŚNIENIE
przypadek x = 10
:
ta tworzy zmienną w zasięgu globalnym o nazwie x
o wartości 10
. Dodatkowo jest to wyrażenie, które zwraca wartość 10
. Funkcja ta jest przydatna, aby być w stanie robić takie rzeczy jak var x = y = 10;
która określa zarówno x
i y
wartości 10
przypadku var x = 10
:
Stwarza zmienną w bieżącym zakresie, który właśnie tak dzieje się globalny zasięg o nazwie x
o wartości 10
. Ponieważ jest on tworzony przy użyciu składni , nie może być oceniany jako wyrażenie, dlatego zwraca undefined
, który jest drukowany na konsoli.
STRESZCZENIE
Nie ma różnicy w efekcie pisania var x = 10
vs x = 10
z konsoli, chociaż nie będzie w innych miejscach. Ten ostatni nie jest również dozwolony w trybie ścisłym. Jednak pierwszy zwraca undefined
, ponieważ po uruchomieniu nie ma wyjścia, jednak druga zwraca 10
, ponieważ x=10
jest wyrażeniem.
Przykład
Można zobaczyć, co dzieje się trochę lepiej, jeśli używasz eval
var output = eval('x = 10');
console.log(output) // 10
vs
var output = eval('var x = 10');
console.log(output) // undefined
// they both define var x and set it value to 10,but they are diff about below
// x is globally
x = 10
// x is scopely
var x = 10
W ENV przeglądarki globalnie średnią var jest zdefiniować jako Object window
„s własności
jednak być ostrożnym przy użyciu pierwszego kodu, może spowodować globalny zdefiniować zmienną.
A jeśli w strict mode
, to nie będzie działać, ponieważ Pośrednio zdefiniowane globalnej nie pozwalają.
OP rozumie, co robią obie wersje, a także zakres. Pytanie brzmi, dlaczego po wprowadzeniu tych linii * do konsoli * konsola podaje inne odpowiedzi. – nnnnnn
Scenariusz 1:
Zobacz Zasadniczo podczas wpisywania x = 10 na konsoli przeglądarki dostajesz 10 bo 10 jest wartość int zwracane przez konsolę przeglądarki.
Scenariusz 2: Scenariusz 2: A gdy wpisujesz var x = 10 na konsoli przeglądarki otrzymujesz "niezdefiniowany", ponieważ wyświetla on wartość zwracaną każdego polecenia, a konsola nie zwraca nic w tym scenariuszu.
i dalej Więcej Reference znaleźć tutaj:
- 1. Jaka jest różnica między filtrem (| x |) a filtrem (| i x |)?
- 2. Jaka jest różnica między zmienną x [] a zmienną [] x?
- 3. Dlaczego "logBase 10 x" wolniej niż "log x/log 10", nawet gdy jest wyspecjalizowany?
- 4. Jaka jest różnica między @ Html.ValueFor (x => x.PropertyName) a @ Model.PropertyName
- 5. Jaka jest różnica między [niezdefiniowanym] a [,]?
- 6. Jaka jest różnica między `extern int (x) []` a `extern int x []` w C?
- 7. Jaka jest różnica między kotem a nadrukiem?
- 8. Jaka jest różnica między odejmowaniem `x` a dodawaniem` -x` na komputerze x86?
- 9. Jaka jest różnica między `typedef struct X {}` a `typedef struct {} X`?
- 10. Jaka jest różnica między cookie a cookiejar?
- 11. Jaka jest różnica między parametrami -, -X i -XX w JVM?
- 12. Jaka jest różnica między "Wnioskami" i "Dowolnąformą" w X Storyboard?
- 13. Różnica między ~ (x-1) i ~ x + 1, gdy x = 0x80000000
- 14. PHP: jaka jest różnica między $ var i & var?
- 15. C: różnica między (int) x a podłogą (x)?
- 16. Jaka jest różnica między kodami szesnastkowymi (\ x) i unicode (\ u)?
- 17. Jaka jest różnica (w przypadku zastosowania do mojego kodu) między INT (10) a INT (12)?
- 18. jaka jest różnica między drzewem DOM przeglądarki a drzewem renderowania
- 19. Jaka jest różnica między ramką a ramką?
- 20. Jaka jest różnica między „$ a” i $ a w Uniksie
- 21. Jaka jest różnica między KERN_INVALID_ADDRESS a KERN_PROTECTION_FAILURE?
- 22. Jaka jest różnica między == a === w Verilog?
- 23. jaka jest różnica między X-Auth-Tokenem a nagłówkami Authorization.Which jest preferowana
- 24. Jaka jest różnica między Fetch a Query?
- 25. Różnica między x: kluczem i x: nazwa
- 26. Jaka jest różnica między "nową liczbą (...)" a "liczbą (...)" w JavaScript?
- 27. Jaka jest różnica między węzłem a wierzchołkiem?
- 28. Różnica między UNHEX a X (MySQL)
- 29. Jaka jest różnica między int x = 1 i int x (1) w C++?
- 30. Jaka jest różnica między app.doScript a $ .evalFile?
Nic ... 'x = 10' zwróci wartość tak 10 jest drukowany w konsoli ... kiedy mówisz' var x = 10', żadna wartość nie jest zwracana, dlatego 'undefined' jest drukowane –