2013-10-31 10 views
16

मेरे पास एक जावास्क्रिप्ट फ़ंक्शन है जो वैकल्पिक पैरामीटर स्वीकार करता है। यह Firefox में ठीक काम करता है, लेकिन Google Chrome में यह पता चलता है: -अनकही सिंटेक्स त्रुटि: अप्रत्याशित टोकन = Google क्रोम में

Uncaught SyntaxError: Unexpected token = 

मेरे कोड,

function errorNotification(text = "Something went wrong!") { 
    $.pnotify({ 
     title: 'Error', 
     text: text, 
     type: 'error' 
    }); 
} 

मैं इसी तरह के सवाल का बहुत कुछ देखा है, लेकिन मैं मेरी समस्या का एहसास नहीं कर सकते हैं।

उत्तर

32

आप default parameter सुविधा का उपयोग कर रहे हैं जो केवल फ़ायरफ़ॉक्स द्वारा समर्थित है।

function errorNotification(text) { 
    text = text || "Something went wrong!"; 
    $.pnotify({ 
     title: 'Error', 
     text: text, 
     type: 'error' 
    }); 
} 
+0

अब: इसके बजाय आप की तरह कुछ करना चाहिए अप्रत्याशित टोकन; '' '' लाइन पाठ = typeof पाठ == के लिए 'अनिर्धारित'? "कुछ गलत हो गया!" || पाठ; ' – devo

+0

@devo जो अब एक त्रुटि हुई थी –

+0

ठीक है, समझ गया। क्या आप समझा सकते हैं कि फ़ायरफ़ॉक्स में कोई त्रुटि क्यों नहीं है? – devo

6

जावास्क्रिप्ट आपको इस तरह के डिफ़ॉल्ट तर्कों को पारित करने की अनुमति नहीं देता है। आपको फ़ंक्शन में आंतरिक रूप से डिफ़ॉल्ट असाइन करने की आवश्यकता है।

function errorNotification(text) { 
    text || (text = "Something went wrong!"); 
    $.pnotify({ 
     title: 'Error', 
     text: text, 
     type: 'error' 
    }); 
} 
+0

हां। यह काम कर रहा है। क्या आप समझा सकते हैं कि यह फ़ायरफ़ॉक्स में क्यों काम कर रहा है? – devo

+0

मैं इसे सुनकर बहुत हैरान हूं। यदि यह फ़ायरफ़ॉक्स में फ़ायरफ़ॉक्स में काम कर रहा है तो फ़ायरफ़ॉक्स से किसी भी तरह से आपके अमान्य वाक्यविन्यास को क्षमा करना होगा, या समस्या सिर्फ निगल रही है, इसलिए आपने इसे नोटिस नहीं किया। आपका मूल कोड अमान्य जावास्क्रिप्ट वाक्यविन्यास है, इसलिए यह हर जगह एक त्रुटि फेंक देता है, जब तक कि जेएस कार्यान्वयन में कोई बग न हो। –

+2

@devo डिफ़ॉल्ट पैरामीटर मान भाषा का हिस्सा बनना चाहिए जब [ECMAScript 6] (http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts) को अंतिम रूप दिया गया है। मोज़िला ने बस इसके लिए समर्थन जोड़ा। –

0

function [a-zA-Z0-9_]*?\s{0,}\([^=$)]*?(=)[^)$]*?\) यह डिफ़ॉल्ट पैरामीटर के साथ जे एस कार्यों को खोजने के लिए और फिर उन्हें सही सहायक हो सकता है।

+0

और मैं कार्यों को खोजने के लिए इसका उपयोग कैसे करूं? – cjbarth

1

नोट: यदि आपके पास बूलियन मान है जिसे आप true पर डिफॉल्ट करना चाहते हैं तो अन्य उत्तर काम नहीं करेंगे। ऐसा इसलिए है क्योंकि anything||true हमेशा true लौटाएगा। यह पता चलता है `` Uncaught सिंटैक्स त्रुटि

function foo(bar){ 
    if(bar === undefined) 
    bar = true; 
    //rest of your function 
} 
संबंधित मुद्दे