2012-07-12 10 views
22

Zaproszenie do funkcji JSSprawdź, czy argument przekazany do funkcji Java Script

alertStatement() 

Funkcja Definicja

functio alertStatement(link){ 
if (link){ 
      alert('A');  
    } 

if(link!=null){ 
     alert('B');  
    } 
} 

Oba te sprawozdania działa poprawnie w systemie Windows Env z Tomcat ale żaden z nich wykonać go na produkcji (serwer Linux) Czy istnieje inny sposób porównywania zmiennych, aby działał?

mam to działa za pomocą następującego kodu skryptu java: Teraz następujący kod nie wyświetla ostrzeżenia pop-up

functio alertStatement(link){ 
if (link!==undefined){ 
    alert('A');  
    } 

więc w ostatni niezdefiniowane pracował dla mnie, dla niektórych powodem zerowy porównanie nie działa

+0

Jaki symptom widzisz, że uważasz, że jest jakiś problem? –

+0

Czy możesz zdefiniować "działa dobrze"? Czego byś się spodziewał? – PPvG

+0

Przepraszam za zamieszanie, kiedy wywołuję funkcję w oknach bez parametru, wtedy oba powiadomienia nie pojawiają się. W Linuksie widzę oba pola ostrzeżeń. – KAPILP

Odpowiedz

50

Aby sprawdzić, czy argument ma użyteczną wartość, po prostu sprawdź, czy argument jest niezdefiniowany. Służy to dwóm celom. Sprawdza nie tylko wtedy, gdy coś zostało przekazane, ale także, jeśli ma wartość użytkowa:

function alertStatement(link) { 
    if (link !== undefined) { 
     // argument passed and not undefined 
    } else { 
     // argument not passed or undefined 
    } 
} 

Niektórzy ludzie wolą używać typeof tak:

function alertStatement(link) { 
    if (typeof link !== "undefined") { 
     // argument passed and not undefined 
    } else { 
     // argument not passed or undefined 
    } 
} 

null jest specyficzną wartość. undefined jest tym, co będzie, jeśli nie zostanie przekazane.

Jeśli chcesz tylko wiedzieć, czy coś zostało przekazane, czy nie, i nie obchodzi, jaka jest jego wartość, możesz użyć arguments.length.

function alertStatement(link) { 
    if (arguments.length) { 
     // argument passed 
    } else { 
     // argument not passed 
    } 
} 
+5

'arguments.length === 0' wskazuje, że argument nie został przekazany. Bieżący kod wykona pierwszy oddział, gdy zostanie wywołany przez 'alertStatement (null)' lub 'alertStatement (undefined)', ponieważ 'null == undefined'. –

+3

@Mike - jaki problem próbujesz rozwiązać, że moje rozwiązanie nie rozwiązuje problemu? Nie dostaję powodu do przegłosowania. Testuję, czy argument linku został przekazany z poprawną wartością, czy nie. – jfriend00

+1

Dla konkretnej sytuacji OP 'arguments.length' działałoby dobrze, ale jest to bardziej ogólne rozwiązanie, które może sprawdzić, czy dowolny konkretny argument ma dobrą wartość i nie wymaga konserwacji, jeśli ty lub inny koder doda argument później . To również działa dobrze, więc nadal nie jestem pewien, dlaczego to się stało. – jfriend00

Powiązane problemy