2013-02-18 16 views
7

कृपया 'सख्त उपयोग करें' मान लें; और यह भी मान लें कि, जेएसलिंट चालू है और त्रुटियों को अनदेखा नहीं किया जा सकता है।"खराब लाइन ब्रेकिंग" अप्रचलित "सख्त उपयोग" के साथ अप्रचलित है?

मैं, इतना अधिक पठनीय सूचियों ऑपरेटरों खोजने के लिए और ',' द्वारा शुरू किए

उदा .:

var i = 0 
    , j = 1 
    , someLongVariablename1 
    , someLongVariablename2 
    , someLongVariablename3 
    , someLongVariablename4; 

if((
    'dcr' === cmd 
     && (action) 
     && ('get' === actionHttp || 'post' === actionHttp) 
     && whatever 
    ) { ... } 

इसलिए मेरे सवाल:
"बैड लाइन ब्रेकिंग" के साथ अप्रचलित "सख्त का उपयोग करें" है?

संपादित: 'सख्त उपयोग करें'; कोड को तोड़ने वाली खराब रेखा के निष्पादन को रोक नहीं पाएगा। यह कुछ प्रकार की त्रुटियों के निष्पादन को रोक सकता है।

मुझे लगता है कि जेएसलिंट और जेएसहिंट खराब लाइन को अलग-अलग तोड़ने का इलाज करते हैं। JSHint मुझे पसंद सिंटैक्स की ओर बहुत दोस्ताना है।

तो, यह उन लोगों के लिए समाधान हो सकता है जो इस पर काम कर रहे हैं।

उत्तर

5

दुर्भाग्यवश, strict modeautomatic semicolon insertion का डरावना अक्षम नहीं करता है, और इसलिए "खराब" लाइन ब्रेक एक समस्या बनी हुई है। उदाहरण के लिए:

(function() { 
    "use strict"; 

    console.log(foo()); 

    function foo() { 
    var a = 1, b = 2; 

    return 
    a + b; 
    } 
})(); 

Live Example | Source क्योंकि एएसआई में लात मारता है और foo में return के बाद अर्धविराम कहते हैं,

अभी भी लॉग undefined बजाय 3 (आप कंसोल खोलने के लिए और इस पर गौर करने की जरूरत है)।

+0

हम जेएसलिंट में बहुत सख्त सेटिंग्स का उपयोग कर रहे हैं। आपके द्वारा लिखे गए कोड एक पूर्ण JSLint एंटी-पैटर्न है, क्योंकि जेएसलिंट तीन त्रुटियां देता है: * अपेक्षित; त्रुटि * पहुंच योग्य कोड त्रुटि –

+1

मैंने प्रश्न संपादित किया: मैं JSLint का कठोर उपयोग मान रहा हूं, ताकि JSLint त्रुटियों के स्थान पर निष्पादन आगे नहीं बढ़ेगा। हालांकि, यह वास्तव में सवाल को जटिल करता है ... मूल रूप से एक साधारण सवाल है और आपका उत्तर एक सही अधिकार है। मैं आपके उत्तर को सही चिह्नित कर रहा हूं। –

संबंधित मुद्दे