de-vraag
  • Jautājumi
  • Tagi
  • Lietotāji
Paziņojumi
Apbalvojumi
Reģistrācija
Pēc reģistrēšanās jums tiks paziņots par atbildēm un komentāriem uz jūsu jautājumiem.
Pieslēgties
Ja jums jau ir konts, piesakieties, lai pārbaudītu jaunus paziņojumus.
Būs atlīdzība par pievienotajiem jautājumiem, atbildēm un komentāriem.
Vairāk
Avots
Rediģēt
Samuel Liew
Samuel Liew
Question

JavaScript pārbaude, vai mainīgais pastāv (ir definēts/inicializēts)

Kura metode, lai pārbaudītu, vai mainīgais ir inicializēts, ir labāka/pareizāka? (Pieņemot, ka mainīgais var saturēt jebko (virkni, int, objektu, funkciju utt.)).

if (elem) { // or !elem

vai

if (typeof(elem) !== 'undefined') {

vai

if (elem != null) {
1632 2011-02-25T03:44:47+00:00 3
Samuel Liew
Samuel Liew
Rediģēts jautājums 30priekšpusdienari4t oktobrī 2015 в 4:51
Programmēšana
javascript
variables
if-statement
initialization
undefined
Popular videos
Java Programming Tutorial 8 - Variable Declaration and Initialization
Java Programming Tutorial 8 - Variable Declaration and Initialization
pirms 3 gadiem
CS50 2014 - Week 4
CS50 2014 - Week 4
pirms 7 gadiem
CS50 2015 - Week 2
CS50 2015 - Week 2
pirms 6 gadiem
CS50 2016 Week 0 (pre-release)
CS50 2016 Week 0 (pre-release)
pirms 5 gadiem
CS50 2014 - Week 1, continued
CS50 2014 - Week 1, continued
pirms 7 gadiem
CS50 2015 - Week 0, continued
CS50 2015 - Week 0, continued
pirms 6 gadiem
CS50 2015 - Week 6
CS50 2015 - Week 6
pirms 6 gadiem
CS50 Lecture by Mark Zuckerberg - 7 December 2005
CS50 Lecture by Mark Zuckerberg - 7 December 2005
pirms 8 gadiem
CS50 2016 - Week 5 - Data Structures
CS50 2016 - Week 5 - Data Structures
pirms 5 gadiem
CS50 2015 - Week 4, continued
CS50 2015 - Week 4, continued
pirms 6 gadiem
CS50 2015 - Week 4
CS50 2015 - Week 4
pirms 6 gadiem
CS50 2015 - Week 0
CS50 2015 - Week 0
pirms 6 gadiem
CS50 2015 - Week 1
CS50 2015 - Week 1
pirms 6 gadiem
CS50 2015 - Week 2, continued
CS50 2015 - Week 2, continued
pirms 6 gadiem
CS50 2014 - Week 4, continued
CS50 2014 - Week 4, continued
pirms 7 gadiem
CS50 2015 - Week 3
CS50 2015 - Week 3
pirms 6 gadiem
« Iepriekšējais
Nākamais »
Šim jautājumam ir 1 atbildi angļu valodā, lai tos izlasītu ieiet savā kontā.
Jim Puls
Jim Puls
6priekšpusdienari4t februārī 2009 в 4:56
2009-02-06T04:56:55+00:00
Vairāk
Avots
Rediģēt
#11952296

Jums ir nepieciešams typeof operators. Konkrēti:

if (typeof variable !== 'undefined') {
    // the variable is defined
}
 Silveri
Silveri
Rediģēta atbilde 27pēcpusdienari3t novembrī 2014 в 2:04
2891
0
David Tang
David Tang
25priekšpusdienari4t februārī 2011 в 3:48
2011-02-25T03:48:28+00:00
Vairāk
Avots
Rediģēt
#11952298

Lielākajā daļā gadījumu izmantojiet:

elem != null

Atšķirībā no vienkāršā if (elem) tas pieļauj 0, false, NaN un '', bet noraida null vai undefined, padarot to par labu, vispārīgu argumenta vai objekta īpašības klātbūtnes testu.


Arī pārējās pārbaudes nav nepareizas, tām vienkārši ir atšķirīgs pielietojums:

  • (elem): var izmantot, jaelemgarantēti ir objekts vai jafalse,0u.c. tiek uzskatīti par "noklusējuma" vērtībām (tātad līdzvērtīgiundefinedvainull`).

  • typeof elem == 'undefined' var izmantot gadījumos, kad norādītajam null ir atšķirīga nozīme nekā neinicializētam mainīgajam vai īpašībai.

  • Šī ir vienīgā pārbaude, kas neizmet kļūdu, ja elem nav deklarēts (t. i., nav vārdiņa paziņojuma, nav window īpašība vai nav funkcijas arguments). Tas, manuprāt, ir diezgan bīstami, jo tas pieļauj, ka pārrakstīšanās kļūdas var palikt nepamanītas. Lai no tā izvairītos, skatiet tālāk aprakstīto metodi.


Noderīgs ir arī stingrs salīdzinājums ar undefined:

if (elem === undefined) ...

Tomēr, tā kā globālo undefined var pārrakstīt ar citu vērtību, vislabāk pirms mainīgā undefined lietošanas deklarēt mainīgo undefined pašreizējā darbības jomā:

var undefined; // really undefined
if (elem === undefined) ...

Vai arī:

(function (undefined) {
    if (elem === undefined) ...
})();

Šīs metodes sekundārā priekšrocība ir tā, ka JS minifīderi var samazināt undefined mainīgo līdz vienai rakstzīmei, tādējādi katru reizi ietaupot dažus baitus.

David Tang
David Tang
Rediģēta atbilde 28priekšpusdienari0t martā 2011 в 3:32
116
0
Alan Geleynse
Alan Geleynse
25priekšpusdienari4t februārī 2011 в 3:46
2011-02-25T03:46:39+00:00
Vairāk
Avots
Rediģēt
#11952297

Tas ir atkarīgs no tā, vai jums ir svarīgi tikai tas, ka mainīgais ir definēts, vai arī vēlaties, lai mainīgajam būtu kāda nozīmīga vērtība.

Pārbaudot, vai tips ir nenoteikts, tiks pārbaudīts, vai mainīgais jau ir definēts.

=== null vai !== null pārbaudīs tikai to, vai mainīgā vērtība ir tieši null.

== null vai != null pārbaudīs, vai vērtība ir nedefinēta vai null.

if(value) pārbaudīs, vai mainīgais ir nedefinēts, null, 0 vai tukša virkne.

29
0
Pievienot jautājumu
Kategorijas
Viss
Tehnoloģija
Kultūra / atpūta
Dzīve / Māksla
Zinātne
Profesionāls
Uzņēmējdarbība
Lietotāji
Visi
Jauns
Populārs
1
mohidil qodirova
Reģistrēts pirms 1 dienas
2
Jasur Fozilov
Reģistrēts pirms 2 dienām
3
Zuxriddin Muydinov
Reģistrēts pirms 2 dienām
4
Денис Анненский
Reģistrēts pirms 5 dienām
5
365
Reģistrēts pirms 1 nedēļas
BG
DA
DE
EL
ES
FR
ID
IT
JA
KO
LT
LV
NL
PL
PT
RU
SK
SL
TR
ZH
© de-vraag 2022
Avots
stackoverflow.com
saskaņā ar licenci cc by-sa 3.0 ar attiecinājumu