/ / जावास्क्रिप्ट नहीं ऑपरेटर - जावास्क्रिप्ट

जावास्क्रिप्ट नहीं ऑपरेटर - जावास्क्रिप्ट

नमस्कार, मैं वर्तमान में जावास्क्रिप्ट पढ़ रहा हूँ और इन दोनों उदाहरणों के बीच नहीं (!) ऑपरेटर पर उलझन में हूँ! प्रत्येक मामले का खंडन लगता है। मेरा विचार प्रक्रिया नरम हो जाती है:

1.

var theNumber = Number(prompt("Pick a number", ""));
if (!isNaN(theNumber))
alert("Your number is the square root of " +
theNumber * theNumber);

अगर मैं varNumber को 3 का मान देता हूं, तो isNaN (3) गलत वापस आ जाएगा और इसलिए अलर्ट फ़ंक्शन चलेगा। यदि इस मामले में चलने के लिए स्टेटमेंट की क्या स्थिति है?
2.

do {
var yourName = prompt("Who are you?");
} while (!yourName);
console.log(yourName);

अगर मैं आपका नाम "जॉर्ज" का मान देता हूं, तो कंसोल.लॉग (आपका नाम) चलेगा यदि आपका नाम गलत का मूल्यांकन करता है, लेकिन आपका नाम इस मामले में सत्य का मूल्यांकन करेगा, तो "जॉर्ज" एक स्ट्रिंग है।

उत्तर:

जवाब के लिए 0 № 1

लूप कभी भी बाहर नहीं निकलता है! आपका नाम गलत है। इसलिए यह तभी बाहर निकलता है जब आपका नाम सत्य होता है (इसलिए! आपका नाम गलत है)। तो कंसोल .log (आपका नाम) चलेगा केवल तभी जब आपका नाम सत्य का मूल्यांकन करता है

संपादित करें: जानकारी के लिए:

if(true)   // evaluates to true and will run
if(!true)  // evaluates to false and is not run
if(!false) // evaluates to true and will run

मेरा सुझाव है कि आप ऑनलाइन तार्किक ऑपरेटरों के स्पष्टीकरण के माध्यम से जाना।


जवाब के लिए 0 № 2

सामान्य रूप में !true === false

  1. isNaN = "क्या यह संख्या नहीं है?"। तो मूल रूप से isNaN(..) = "क्या यह संख्यात्मक नहीं है?", इसलिए !isNaN(..) = "क्या यह एक संख्या है?" -

  2. यह आपसे तब तक नामों के लिए पूछेगा जब तक (आप) कुछ भी दर्ज करते हैं जो गलत का मूल्यांकन करता है (जैसे कि यदि आप कुछ भी दर्ज नहीं करते हैं)। !<String> सत्य का मूल्यांकन करता है। इसलिए एक बार जब आप कुछ दर्ज करते हैं तो कथन निम्नानुसार मूल्यांकन करेगा

!yourName-> !"George" -> !true -> false -> बाहर निकलते समय


जवाब के लिए 0 № 3

isNaN का अर्थ "संख्या नहीं है" है। यदि आप इसे एक स्ट्रिंग देते हैं जिसे एक संख्या में पार्स किया जा सकता है, तो यह गलत होगा।

isNaN("1");  //false
isNaN("a");  //true
isNaN(2);    //false

इसलिए पहले मामले में, कोई समस्या नहीं है, यह सामान्य रूप से चलेगा।

दूसरे मामले के लिए, एक स्ट्रिंग, एक के रूप में पारित कर दियाबूलियन सच है अगर अशक्त नहीं है। आप जो ("जॉर्ज") पास करते हैं, वह सही हो जाता है और आप इसे ऑपरेटर के साथ गलत बनाते हैं। इसलिए लूप समाप्त होता है और कंसोल को लिखता है। यदि आप शीघ्र कुछ भी लिखने के बिना प्रवेश करने की कोशिश करते हैं, तो लूप जारी रहेगा।

यहाँ सब कुछ सामान्य है। आपका सवाल क्या है?


जवाब के लिए 0 № 4

1.

isNaN (TheNumber) का अनुवाद "Not (is not a number)" है, इसलिए हम डबल Not को कम कर सकते हैं, और यह पता चलता है: "यह एक संख्या है"।

लेकिन, शर्त "अगर (टाइप करें theNumber ==" नंबर ")" गलत है, क्योंकि "प्रॉम्प्ट" स्ट्रिंग "3", संख्या नहीं है। जाँच करने से पहले फ़ंक्शन एक नंबर पर तर्क को परिवर्तित करता है।

उदाहरणों पर गौर करें https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/isNaN

2.

सब ठीक है, यह टाइप रूपांतरण है। इसे समझने के लिए आपको यह लेख पढ़ना चाहिए https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Type_conversion

यह दो शब्द हैं: कभी-कभी ऑपरेटर नहीं (!) का उपयोग टाइप रूपांतरण के लिए किया जाता है। वैसे, आप डबल ऑपरेटर का उपयोग नहीं कर सकते हैं। उदाहरण:

!!"test string" // returns true