2012-02-27 8 views
9

की उम्मीद नहीं करता है जेएसलिंट जोर देकर कहते हैं कि नीचे दिए गए उदाहरण में exotic tilde operator का मेरा उपयोग अप्रत्याशित है। मैं क्या सोच रहा हूं कि यह जेएसलिंट की सीमा है? या सख्त मोड? या मैं और क्या याद कर रहा हूँ?जेएसलिंट मेरे tildes

(function() { 
    'use strict'; 
    if (~'foo'.indexOf('bar')) { 
     return 'wild accusations'; 
    } 
}()); 

इसके अलावा, मुझे नीचे के अधिक जटिल उदाहरण के बजाय सरल दिखने वाले टिल्डे ऑपरेटर का उपयोग क्यों नहीं करना चाहिए? निश्चित रूप से एक अच्छा कारण नहीं होना चाहिए?

if ('foo'.indexOf('bar') >= 0) { … } 
+3

अरे तहत सक्षम कर सकते हैं, कि कुछ मुझे नहीं पता था है। – MrBoJangles

+0

आपको 'टोलरेट बिटवाई ऑपरेटर' ('~' थोड़ा सा ऑपरेटर है) सक्षम करना होगा। इसका उपयोग न करने का एक कारण: मुझे नहीं लगता कि यह आमतौर पर उपयोग किया जाता है और समझना मुश्किल होता है (लेकिन यह सिर्फ मुझे हो सकता है)। इसे न केवल ऑपरेटर की समझ की आवश्यकता होती है, बल्कि संख्या * प्रतिनिधित्व *, यानी '-1' को '1'' पर सेट की गई सभी बिट्स के साथ दर्शाया जाता है (और इसलिए पूरक' 0' -> 'false' है) । –

+0

इसलिए ~ ~ bitwise नहीं है, और जेएस 0-> सही! 0-> गलत, और केवल ~ -1-> 0 ... चालाक –

उत्तर

6

JSLint Docs से:

बिटवाइज़ ऑपरेटर्स

जावास्क्रिप्ट एक पूर्णांक प्रकार नहीं है, लेकिन यह बिटवाइज़ ऑपरेटर्स है। Bitwise ऑपरेटरों अपने ऑपरेटरों को फ्लोटिंग पॉइंट से पूर्णांक और पीछे में परिवर्तित करते हैं, इसलिए वे सी या अन्य भाषाओं में उतने कुशल नहीं हैं। ब्राउज़र अनुप्रयोगों में वे शायद ही कभी उपयोगी होते हैं। लॉजिकल ऑपरेटरों की समानता कुछ प्रोग्रामिंग त्रुटियों को मुखौटा कर सकती है। Bitwise विकल्प इन ऑपरेटरों के उपयोग की अनुमति देता है: < < >> >>> ~ & |

आप options

चीयर्स

+0

लिंक काम नहीं कर रहा है, समाधान के साथ उत्तर को बेहतर अद्यतन करें – sidgate

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