2012-03-19 15 views
30

मैं जेएसलिंट का उपयोग कर रहा था और मुझे फ़ंक्शन नाम के बाद स्थान डालने में त्रुटि मिली। वह बुरा क्यों है?फ़ंक्शन नाम के बाद स्थान गलत है?

function coolness() { 
    var hi = "this"; 
} 

त्रुटि: पंक्ति 1 वर्ण 19 में समस्या:। 'ठंडक' और '(' के बीच अप्रत्याशित अंतरिक्ष

+0

यह बुरा है क्योंकि एक निश्चित क्रॉचेटी वरिष्ठ नागरिक एक बुरे मूड में था जब उसने जेस्लिंट लिखा था, क्योंकि आप लगातार इसका इस्तेमाल जारी रखेंगे। –

+0

सम्मेलन कोड को और अधिक पठनीय रखने में मदद करते हैं। ऐसे कई कार्यों में संगति आवश्यक है। – Gherman

उत्तर

38

JSLint के रूप में ज्यादा के रूप में यह एक जावास्क्रिप्ट शैली चेकर है एक Javascript संरचना चेकर नहीं है। इसका उपयोग करने वाले स्टाइल दिशानिर्देश डगलस क्रॉकफ़ोर्ड द्वारा लिखे गए हैं।

कुछ लोग अपने स्टाइल फैसलों से सहमत नहीं हैं, कुछ लोग करते हैं। वे कानून नहीं हैं और आपको उनका पालन करने की आवश्यकता नहीं है। वैकल्पिक जेएस लिंटर्स जैसे JSHint मौजूद हैं।

खास नियम आप में चल रहे हैं है:

There should be no space between the name of a function and the (left parenthesis) of its parameter list.

जावास्क्रिप्ट खाली स्थान के प्रति संवेदनशील नहीं है। यदि आप इसे बेहतर महसूस करते हैं तो आप इस जगह को जोड़ सकते हैं। (हालांकि यह मानक नहीं है।)

+0

ओह ठीक है। जानकारी के लिए धन्यवाद! – supercoolville

10

जावास्क्रिप्ट कोड convetions की जांच करें bellow और आप अपने जवाब मिल जाएगा

http://crockford.com/javascript/code.html#function

There should be no space between the name of a function and the ((left parenthesis) of its parameter list. There should be one space between the) (right parenthesis) and the { (left curly brace) that begins the statement body. The body itself is indented four spaces. The } (right curly brace) is aligned with the line containing the beginning of the declaration of the function.

function outer(c, d) { 
    var e = c * d; 

    function inner(a, b) { 
     return (e * a) + b; 
    } 

    return inner(0, 1); 
} 
: एक समारोह के लिए

उदाहरण

के लिए उदाहरण गुमनाम समारोह:

div.onclick = function (e) { 
    return false; 
}; 
+0

आपकी व्याख्या के लिए एक उदाहरण अच्छा होगा :) – yashhy

+0

@yashhy बहुत अच्छी तरह से दोस्त :) –

2

तकनीकी रूप से बोलते हुए, आपका कोड पूरी तरह से मान्य है, हालांकि कुछ कोड शैली मानक यह निर्देश देते हैं कि ऐसी जगह नहीं होनी चाहिए (उदाहरण के लिए, जिसे @ बोगन ने उद्धृत किया है)।

वास्तव में, जब आप (YUI Compressor या Google Closure Compiler जैसे कई उपकरणों में से एक का उपयोग करके) इन स्थानों पूरी तरह से हटा दिया जाता है अपने कोड सेक - लोगों से पहले/कर्ली कोष्ठक के बाद के रूप में @Bodgan द्वारा उद्धृत भी शामिल है। और यह निश्चित रूप से वैध जेएस है।

42

According to Crockford,

कार्यों नामित के लिए, के बीच समारोह नाम और कोष्ठक अंतरिक्ष न डालें:

function doStuff() { 
    //stuff here 
} 

गुमनाम कार्यों के लिए, function कीवर्ड और कोष्ठक के बीच डालने अंतरिक्ष DO:

function() { 
    //stuff here 
} 
+20

आईएमएचओ (और क्रॉकफ़ोर्ड) इससे दो प्रकार के फ़ंक्शन को अलग करना आसान हो जाता है।मुझे लगता है कि क्रॉकफोर्ड के नियमों पर चिपके हुए हैं, जहां भी आप स्वाभाविक रूप से एक अच्छा विचार नहीं करेंगे क्योंकि वे JSLint का उपयोग करके लगातार और मान्य हैं। वे जावास्क्रिप्ट के लिए डी-फैक्टो कोड शैली नियम हैं। जब तक कि आपके पास कुछ अलग उपयोग करने का वास्तव में अच्छा कारण न हो, मैं नहीं करूँगा। (और क्रॉकफ़ोर्ड से सहमत नहीं है क्योंकि आपने हमेशा एक और तरीका कोड किया है वास्तव में एक अच्छा कारण नहीं है) – rjmunro

+3

@rjmunro +1 - टिप्पणी के लिए। वर्तमान में यह पृष्ठ पर एकमात्र जगह है जो 'बताती है कि यह क्यों बुरा है' (बिना कथित तौर पर सम्मेलन के नियमों को दोहराए बिना)। –

+1

मैं दो अलग-अलग बता सकता हूं। क्या इसके लायक एक विशेष केस स्टाइल नियम जोड़ रहा है? मुझे ऐसा नहीं लगता, एफडब्ल्यूआईडब्ल्यू, डी 3.जेएस लाइब्रेरी क्रॉकफोर्ड के सुझाव को तोड़ती है, जो मेरे द्वारा ठीक है। –

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