javascript - एक एकल संख्या के साथ एक सरणी को एक संख्या क्यों माना जाता है?



(1)

एक isNumeric कार्य पर काम करते हुए मुझे यह बढ़त मामला मिला:

[5] को एक संख्या माना जाता है, इसका उपयोग संख्यात्मक ऑपरेटरों जैसे + , - , / आदि के साथ किया जा सकता है और जब parseFloat को दिया जाता है तो 5 देता है।

जावास्क्रिप्ट एकल मान को किसी संख्या में क्यों परिवर्तित करता है?

उदाहरण के लिए

const x = [10];
console.log(x - 5, typeof x);

देता है

5 object

- ऑपरेटर अपने आस-पास के भावों को संख्याओं के साथ जोड़ने का प्रयास करता है। [5] , जब एक आदिम में परिवर्तित किया जाता है (सभी तत्वों को मिलाकर), converted '5' मूल्यांकन करता है, जिसे स्पष्ट रूप से बिना अंक के एक संख्या में परिवर्तित किया जा सकता है।

देखें spec :

AdditiveExpression: AdditiveExpression - MultiplicativeExpression

  1. बता दें कि Lref AdditiveExpression के मूल्यांकन का परिणाम है।
  2. लेवल गेटवेलु (lref) होने दें।
  3. ReturnIfAbrupt (lval)।
  4. Rref को MultiplicativeExpression के मूल्यांकन का परिणाम होने दें।
  5. चलो GetValue (rref) हो जाए।
  6. ReturnIfAbrupt (rval)।
  7. Lnum को ToNumber (lval) होने दें।
  8. ReturnIfAbrupt (lnum)।
  9. Rnum को ToNumber (rval) होने दें।
  10. ReturnIfAbrupt (rnum)।
  11. घटाव ऑपरेशन को lnum और rnum पर लागू करने का परिणाम लौटाएं। नोट 12.7.5 से नीचे देखें।

जहां ToNumber किसी वस्तु के मामले में करता है:

  1. बता दें कि PrimValue ToPrimitive (तर्क, संकेत संख्या) है।
  2. ToNumber (primValue) वापस करें।

जो ToPrimitive ओर जाता है, सरणी पर toString को कॉल करता है, जो Array.prototype.toString ओर जाता है, जो कॉल करता है .join






javascript