javascript - क्यों करता है{। । ।.0}का मूल्यांकन{}?




spread-syntax number-literal (5)

स्प्रेड ऑपरेटर {...} पुनरावृत्तियों को विस्तारित करने की अनुमति देता है। इसका अर्थ है कि उन डेटा प्रकारों को जिन्हें key-value जोड़े के रूप में परिभाषित किया जा सकता है, का विस्तार किया जा सकता है। Object संदर्भ में हम कुंजी-मूल्य जोड़ी को वस्तु संपत्ति कहते हैं और यह मूल्य है जबकि arrays संदर्भ में हम सूचकांक को कुंजी के रूप में और तत्व में मान सकते हैं क्योंकि यह मूल्य है।

let obj = { a: 4, b: 1};
let obj2 = { ...obj, c: 2, d: 4}; // {a: 4, b: 1, c: 2, d: 4}

let arr1 = ['1', '2'];
let obj3 = { ...arr1, ...['3']}; // {0: "3", 1: "2"}

सरणी के संदर्भ में, चूंकि यह इंडेक्स को कुंजी के रूप में लेता है, इसलिए यहां arr1 1 के तत्व '1' को '3' के साथ बदल दिया जाता है क्योंकि दोनों का अलग-अलग सरणी में एक ही सूचकांक होता है।

स्ट्रिंग्स के साथ भी प्रसार ऑपरेटर गैर-रिक्त ऑब्जेक्ट लौटाता है। चूंकि स्ट्रिंग चरित्र की एक सरणी है, इसलिए यह स्ट्रिंग को एक सरणी के रूप में मानता है।

let obj4 = {...'hi',...'hello'}   // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"}
let obj5 = {...'y',...'x'}   // {0: "x" }

लेकिन अन्य आदिम डेटा प्रकारों के साथ यह खाली वस्तु लौटाता है

नंबरों के साथ

let obj6 = { ...0.0, ...55} // {}

बूलियन के साथ

let obj7 = { ...true, ...false} // {}

निष्कर्ष में उन डेटा प्रकारों को जो कुंजी-संचालक जोड़े के रूप में व्यवहार किया जा सकता है जब प्रसार ऑपरेटर के साथ उपयोग किया जाता है {...} गैर-रिक्त ऑब्जेक्ट देता है अन्यथा यह खाली वस्तु देता है {}

मुझे मित्र के कोड में बस {....0} मिला। कंसोल में इसका मूल्यांकन {} (खाली वस्तु) करता है।

ऐसा क्यों है? जावास्क्रिप्ट में 4 डॉट्स का क्या अर्थ है?


एक साधारण शब्दों में {...} जावास्क्रिप्ट में फैल ऑपरेटर दूसरे के साथ एक वस्तु / सरणी का विस्तार करता है।

इसलिए, जब babelifier एक दूसरे के साथ विस्तार करने की कोशिश करता है, तो उसे यह पहचानना होगा कि वह किसी सरणी या ऑब्जेक्ट को विस्तारित करने का प्रयास कर रहा है या नहीं।

array के मामले में, यह तत्वों पर पुनरावृत्त करता है।

object के मामले में, यह कुंजियों पर निर्भर करता है।

इस परिदृश्य में, Babelyfier ऑब्जेक्ट की own property call की जाँच करके number लिए कुंजियाँ निकालने का प्रयास कर रहा है जो कि number लिए अनुपलब्ध है, इसलिए यह खाली ऑब्जेक्ट देता है।


चार बिंदुओं का वास्तव में कोई अर्थ नहीं है। ... प्रसार ऑपरेटर है , और .0 0.0 लिए छोटा है।

किसी वस्तु में 0 (या किसी भी संख्या) को फैलाने से एक खाली वस्तु प्राप्त होती है, इसलिए {}


एक वस्तु शाब्दिक में तीन बिंदु एक फैली हुई संपत्ति हैं , जैसे:

  const a = { b: 1, c: 1 };
  const d = { ...a, e: 1 }; // { b: 1, c: 1, e: 1 }

0 के साथ अंतिम बिंदु संख्या शाब्दिक है। 0.0 समान है। इसलिए यह:

 { ...(0.0) }

संख्या ऑब्जेक्ट के सभी गुणों को ऑब्जेक्ट में फैलता है, हालांकि संख्याओं के पास कोई (स्वयं) गुण नहीं हैं जो आपको एक खाली ऑब्जेक्ट वापस मिलता है।


var Animal = function(options) {
    var name = options.name;
    var animal = {};

    animal.getName = function() {
        return name;
    };

    var somePrivateMethod = function() {

    };

    return animal;
};

// usage
var cat = Animal({name: 'tiger'});




javascript spread-syntax number-literal