2017-08-20 4 views
-1

Ich habe versucht, diesen Code ausgeführt wird, und ich kann nicht verstehen, warum der Fehler ‚Typeerror: first.value ist nicht definiert‘, sollte in meinem Anwendungsfall entstehen unten hervorgehoben:Typeerror: first.value undefiniert ist

function myFunction() { 
    var str = "aust988957588raliajfur748jejfu3737238ef8re8e"; 
    var res = str.split(""); 

    var first = res[0]; 
    var a = /^[a]$/; 

    if (first.value.match(a)) { 
    alert("a"); 
    } else { 
    alert("false"); 
    } 
} 

Eine sorgfältige Überprüfung dieser Ressource https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Unexpected_type hat nicht geholfen.

Worin besteht dieser Fehler?

+0

Das ist, bedeutet 'arbeitet first' kein' value' Eigenschaft hat. Wo sollte es gegeben werden? – Carcigenicate

+0

Es ist, weil 'first.value'' undefined' ist ... vertraut? – Adam

+0

wer hat meine Frage abgelehnt. Ich hoffe, dass er nachts besser schläft? – Terungwa

Antwort

2

first wäre Zeichenfolge "a", eine Zeichenfolge hat keine value Eigenschaft, so dass es undefined zurückgibt. Verwenden Sie nur first.match(a):

function myFunction() { 
    var str = "aust988957588raliajfur748jejfu3737238ef8re8e"; 
    var res = str.split(""); 

    var first = res[0]; 
    var a = /^[a]$/; 

    if (first.match(a)) { 
    alert("a"); 
    } else { 
    alert("false"); 
    } 
} 
2

Da das String Objekt die Eigenschaft nicht haben value.

So können Sie es beheben, indem Sie if(first.value.match(a)) zu if(first.match(a)) ändern.

function myFunction() { 
 
    var str = "aust988957588raliajfur748jejfu3737238ef8re8e"; 
 
    var res = str.split(""); 
 
    var first = res[0]; 
 
    var a = /^[a]$/; 
 
    if(first.match(a)) 
 
    { 
 
    alert("a"); 
 
    } 
 
    else 
 
    { 
 
    alert("false"); 
 
    } 
 
} 
 

 
myFunction();

+1

Warum sollte das einen Unterschied machen? – Andy

+0

@Andy Weil das String-Objekt keine Eigenschaft 'value' hat. –

+0

Warum hast du das dann nicht in deine Antwort aufgenommen? – Andy

0

versuchen gerade tun:

first.match(a) 

sehen, ob das

+0

* Warum * würde es funktionieren? – Andy

+0

Weil es eine reine Zeichenfolge ist, brauchen Sie nicht die Wertmethode (und es wird nicht funktionieren ...) – GuyL

+0

Warum haben Sie das nicht in Ihrer Antwort dann? Wenn Ihre Antwort vollständiger ist, erhalten Sie mehr Upvotes. So wie es aussieht, ist das keine gute Antwort. – Andy