2016-01-18 7 views
11

लगभग 14 जनवरी 2016 तक, जेएसलिंट ने var या let घोषणाओं की घोषणा शुरू कर दी है जिसमें प्रति घोषणा एक से अधिक चर है, और इस नए "समस्या" को अनदेखा करते हुए एक नया निर्देश, multivar बनाया है।अपेक्षित ';' और इसके बजाय ',' देखा। - जेएसलिंट मल्टीवार सेटिंग

यह एक बहुत ही महत्वपूर्ण बदलाव है, क्योंकि पिछले संस्करणों की शिकायत होगी यदि में दो var एस समान कोड ब्लॉक में हैं।

कि आज के रूप में है, (18 जनवरी 2016), इस कोड को अब JSLint में टूट जाता है:

/*jslint white:true, browser:true, devel:true */ 
function a(b) { 
    "use strict"; 
    var c, d; // <<< Now bad!! 
    d = "test"; 
    c = d + b; 
    console.log(c); 
} 

रिपोर्ट की गई त्रुटि है, लाइन var c,d;

"सही" ठीक है के लिए Expected ';' and instead saw ','. जाहिरा तौर पर इस:

/*jslint white:true, browser:true, devel:true */ 
function a(b) { 
    "use strict"; 
    var c; 
    var d; // <<< this *used* to be forbidden. 
    d = "test"; 
    c = d + b; 
    console.log(c); 
} 

ध्यान दें कि यह नव सही कोड त्रुटि, Error: combine_var पैदा करने वाला होता 01,235,246 में,।

कि मैं पा सकते हैं Crockford से बदलाव के लिए केवल विवरण this post on Google Plus होने लगते हैं:

JSLint अब एक multivar विकल्प बर्दाश्त कि कई नामों एक भी वर में घोषित किया गया, चलो, या स्थिरांक बयान है।

... और website instructions पर एक त्वरित उल्लेख ...

बर्दाश्त बयान के अनुसार कई चर घोषणाओं
multivar
true अगर एक var, let, या const बयान दो की घोषणा कर सकते हैं या एक ही कथन में अधिक चर।

multivar JSLint.com पर परिवर्तन अभी तक गिटहब रेपो में प्रतीत नहीं होता है। 14 जनवरी के लिए "var" नामक दो चेकइन (1, 2) देखें। वे दोनों जेएसलिंट में कोड को नई आवश्यकता का पालन करते हैं, लेकिन multivar निर्देशित और जेएसएलआईंट.टी. पर उपयोग में शामिल नहीं है (afaict)।

क्या कोई मुझे बता सकता है कि सामान्य 0,लाइनों को सामान्य रूप से प्रोत्साहित किया गया है, "आपको जेएसलिंट को अनदेखा करना चाहिए," जवाब? यही है, (मुझे उठाने की समझ को प्रोत्साहित करने के लिए मुझे लगता है), से पहले एक ही var की आवश्यकता क्यों थी और यह तर्क अचानक क्यों चल रहा है?

+0

आप और/या वोट नीचे वोट करने के लिए बंद करने के लिए जा रहे हैं, एक टिप्पणी क्यों बहुत उपयोगी होगा। धन्यवाद! – ruffin

+1

डाउनवोट के बारे में निश्चित नहीं है, लेकिन यह एक बहुत ही कट्टरपंथी परिवर्तन है, मैंने निश्चित रूप से इसकी अपेक्षा नहीं की थी (विशेष रूप से क्योंकि यह डिफ़ॉल्ट रूप से अक्षम है)। –

+3

अरे @ जोशक्रोजियर! हाँ, मुझे भी बिल्ली से आश्चर्यचकित कर दिया। यह सिर्फ एक बदलाव नहीं है, जैसे कि जब जेएसलिंट ने सिफारिश की है कि हम हाल ही में 'लूप्स' का उपयोग करना बंद कर दें, तो यह पहले से आवश्यक 180 से एक फ्लैट 180 है। – ruffin

उत्तर

2

एयरबीएनबी शैली मार्गदर्शिका से।

इस तरह से नई परिवर्तनीय घोषणाएं जोड़ना आसान है, और आपको कभी भी स्वैपिंग के बारे में चिंता करने की ज़रूरत नहीं है; एक के लिए, या विराम चिह्न-केवल diffs परिचय। आप एक साथ में सभी के माध्यम से कूदने के बजाय, डीबगर के साथ प्रत्येक घोषणा के माध्यम से भी कदम उठा सकते हैं।

में इस पर अधिक: https://github.com/airbnb/javascript#variables

+3

निश्चित रूप से, मेरा मतलब है, यह * भावना * बनाता है, लेकिन मुझे यकीन नहीं है कि * क्यों *। यही कारण है कि, जब मैं एसक्यूएल लिखता हूं, तो मेरे पास 'WHERE 1 = 1' और उसके बाद प्रत्येक' और 'खंड' है, लेकिन इस मामले में अजीब चीज यह है कि जेएसलिंट ने 180 से अधिक किया जो इसे न केवल प्रोत्साहित करें, लेकिन * आवश्यकता *। एक पूरा जवाब बताएगा कि सम्मेलन पूरी तरह से क्यों बदला गया (** एक 'var' पहले क्यों था) (मैं उठाने की समझ को प्रोत्साहित करने के लिए अनुमान लगाता हूं), और यह तर्क अचानक क्यों चल रहा है? **), तो +1 , लेकिन अब मैं स्वीकार कर रहा हूं। – ruffin

+1

ऐसा नहीं लगता है कि हम जल्दी से बेहतर उत्तर प्राप्त करने जा रहे हैं। अस्थायी रूप से इसे स्वीकार करने के लिए जा रहे हैं, लेकिन अगर मैं बाद में बेहतर हो जाता हूं, तो देखें। :^पी – ruffin

+0

इस बारे में कुछ और सोचने के बाद, मेरा अनुमान होगा कि यह कार्य के शीर्ष पर सभी वर्रों को सुनिश्चित करने का एक आसान तरीका था। और यह परिवर्तन इस तथ्य के साथ करना है कि अब हमारे पास 'const' है और' चलो 'यह अब अधिक समझ में नहीं आता है। –

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