दिलचस्प पोस्ट
जावास्क्रिप्ट में एचटीएमएलएक्स की आवश्यक विशेषता को कैसे सेट करें? एक महीने के पहले दिन का नाम कैसे प्राप्त करें? जावास्क्रिप्ट समापन काम नहीं कर रहा है अधिक जावा कोड PipedInputStream / PipedOutputStream का उपयोग क्यों नहीं करता? PHP $ में PHP का मतलब क्या है? Google मानचित्र एपीआई v2 में मानचित्र के लिए टच ईवेंट को कैसे नियंत्रित किया जाए? OkHttp के साथ सभी प्रमाणपत्रों पर भरोसा करना NoClassDefFoundError जबकि मेरे jar को java.exe -jar के साथ चलाने की कोशिश कर रहा है … क्या ग़लत है? मैं कैसे जांच सकता हूँ अगर कोई स्ट्रिंग दूसरी स्ट्रिंग में मौजूद है PKIX पथ की इमारत को अनदेखा कैसे करें विफल: sun.security.provider.certpath.SunCertPathBuilderException? मैं डीजेंगो में उपयोगकर्ता आईपी पता कैसे प्राप्त करूं? ज़िप फ़ाइल बनाएं: त्रुटि रनिंग कमांड "" का स्थिति 127 है हस्ताक्षर किए संख्याओं के लिए साइन-एंड-मैग्नम के लिए दो पूरक क्यों पसंद करते हैं? डिवेल के साथ रेल 4.0। नेस्टेड विशेषताएँ असीमित पैरामीटर HtmlAgilityPack के साथ HTML पृष्ठ को पार्स करना

क्यों नल एक वस्तु है और रिक्त और अपरिभाषित के बीच अंतर क्या है?

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

जाँच कर रहा है

 if ( object == null ) Do something 

बराबर

 if ( !object ) Do something 

?

और भी:

null और undefined क्या अंतर है?

Solutions Collecting From Web of "क्यों नल एक वस्तु है और रिक्त और अपरिभाषित के बीच अंतर क्या है?"

 (name is undefined) 

आप: name क्या है? (*)
जावास्क्रिप्ट: name ? name क्या है? मुझे नहीं पता कि आप किस बारे में बात कर रहे हैं आपने पहले कभी भी किसी भी name का उल्लेख नहीं किया है। क्या आप (क्लाइंट-) पक्ष पर कुछ अन्य स्क्रिप्टिंग भाषा देख रहे हैं?

 name = null; 

आप: name क्या है?
जावास्क्रिप्ट: मैं नहीं जानता

संक्षेप में; undefined है, जहां कोई धारणा नहीं है; इसका कोई प्रकार नहीं है, और उस दायरे से पहले कभी भी इसका संदर्भ नहीं दिया गया है; null है जहां यह वस्तु मौजूद है, लेकिन यह ज्ञात नहीं है कि मूल्य क्या है

याद करने के लिए एक बात यह है कि null , अवधारणात्मक रूप से, false या "" या इसी तरह की नहीं, भले ही वे प्रकार कास्टिंग के बाद समानता रखते हैं, अर्थात

 name = false; 

आप: name क्या है?
जावास्क्रिप्ट: बूलियन झूठी

 name = ''; 

आप: name क्या है?
जावास्क्रिप्ट: खाली स्ट्रिंग


*: इस संदर्भ में name का मतलब एक चर के रूप में किया गया है जिसे कभी परिभाषित नहीं किया गया है यह किसी भी अपरिभाषित चर हो सकता है हालांकि, नाम किसी भी HTML प्रपत्र तत्व के बारे में एक संपत्ति है यह रास्ता जाता है, वापस रास्ता और आईडी से पहले अच्छी तरह से स्थापित किया गया था यह उपयोगी है क्योंकि आईडी अद्वितीय होना चाहिए लेकिन जिनके नाम नहीं होना चाहिए।

अंतर इस स्निपेट में संक्षेपित किया जा सकता है:

 alert(typeof(null)); // object alert(typeof(undefined)); // undefined alert(null !== undefined) //true alert(null == undefined) //true 

जाँच हो रही है

object == null यह जांचने के लिए अलग है if ( !object )

बाद के बराबर है ! Boolean(object) ! Boolean(object) , क्योंकि यूनरी ! ऑपरेटर ने स्वचालित रूप से सही ऑपरेंड को एक बूलियन में डाल दिया

चूंकि Boolean(null) गलत के बराबर है !false === true

इसलिए यदि आपका ऑब्जेक्ट रिक्त नहीं है , लेकिन गलत है या 0 या "" , तो चेक पारित होगा क्योंकि:

 alert(Boolean(null)) //false alert(Boolean(0)) //false alert(Boolean("")) //false 

null एक ऑब्जेक्ट नहीं है , यह एक आदिम मान है । उदाहरण के लिए, आप इसके लिए गुण जोड़ नहीं सकते कभी-कभी लोग गलत ढंग से मानते हैं कि यह एक वस्तु है, क्योंकि typeof null रिटर्न "object" । लेकिन यह वास्तव में एक बग है (यह भी ECMAScript 6 में तय किया जा सकता है)

null और undefined अंतर इस प्रकार है:

  • undefined : जावास्क्रिप्ट द्वारा प्रयोग किया जाता है और इसका अर्थ है "नो वैल्यू" प्रारंभिक वैरिएबल, लापता पैरामीटर और अज्ञात चर के पास मूल्य है।

     > var noValueYet; > console.log(noValueYet); undefined > function foo(x) { console.log(x) } > foo() undefined > var obj = {}; > console.log(obj.unknownProperty) undefined 

    अज्ञात चर तक पहुँचने, हालांकि, एक अपवाद उत्पन्न करता है:

     > unknownVariable ReferenceError: unknownVariable is not defined 
  • null : प्रोग्रामर द्वारा "कोई मान नहीं" इंगित करने के लिए प्रयोग किया जाता है, उदाहरण के लिए किसी फ़ंक्शन के पैरामीटर के रूप में।

एक चर की जांच करना:

 console.log(typeof unknownVariable === "undefined"); // true var foo; console.log(typeof foo === "undefined"); // true console.log(foo === undefined); // true var bar = null; console.log(bar === null); // true 

एक सामान्य नियम के रूप में, आपको हमेशा === का उपयोग करना चाहिए और JavaScript में कभी भी == (== सभी प्रकार के रूपांतरण करता है जो अप्रत्याशित परिणाम उत्पन्न कर सकता है)। चेक x == null एक बढ़त का मामला है, क्योंकि यह दोनों null और undefined लिए काम करता है:

 > null == null true > undefined == null true 

यह जाँचने का एक सामान्य तरीका है कि एक चर का मान है कि उसे बूलियन में बदल दिया जाए या नहीं, यह देखने के लिए कि क्या यह true । यह रूपांतरण if स्टेटमेंट और बूलियन ऑपरेटर द्वारा किया जाता है! ("नहीं")।

 function foo(param) { if (param) { // ... } } function foo(param) { if (! param) param = "abc"; } function foo(param) { // || returns first operand that can't be converted to false param = param || "abc"; } 

इस दृष्टिकोण का दोष: निम्न सभी मान false मूल्यांकन false , इसलिए आपको सावधान रहना होगा (जैसे, उपरोक्त चेक undefined और 0 बीच अंतर नहीं कर सकते हैं)

  • undefined , null
  • बूलियन: false
  • नंबर: +0 , -0 , NaN
  • तार: ""

आप Boolean को एक फ़ंक्शन के रूप में रूपांतरण (सामान्य रूप से यह एक कन्स्ट्रक्टर है, जिसे new साथ प्रयोग किया जा सकता है) के द्वारा रूपांतरण की जांच कर सकते हैं:

 > Boolean(null) false > Boolean("") false > Boolean(3-3) false > Boolean({}) true > Boolean([]) true 

रिक्त और अपरिभाषित के बीच अंतर क्या है ??

एक संपत्ति जब इसकी कोई परिभाषा नहीं है, तो यह अनिर्धारित है। शून्य एक वस्तु है इसका प्रकार वस्तु है शून्य एक विशेष मूल्य है जिसका अर्थ है "कोई मूल्य नहीं। अनिर्धारित एक वस्तु नहीं है, यह प्रकार का वर्णन अनिर्धारित है।

आप एक वैरिएबल घोषित कर सकते हैं, इसे रिक्त करने के लिए सेट कर सकते हैं, और व्यवहार समान है, सिवाय इसके कि आपको "अपरिभाषित" बनाम "रिक्त" दिखाई देगा। आप एक वेरिएबल की तुलना भी कर सकते हैं जो नल या इसके विपरीत के लिए अनिर्धारित है, और यह स्थिति सही होगी:

  undefined == null null == undefined 

अधिक विस्तार के लिए रिक्त और अपरिभाषित के बीच जावास्क्रिप्ट अंतर को देखें।

और अपने नए संपादन के साथ हाँ

 if (object == null) does mean the same if(!object) 

जब परीक्षण अगर ऑब्जेक्ट झूठा है, तो वे दोनों ही स्थिति की जांच करते हैं जब झूठे परीक्षण करते हैं , लेकिन जब सत्य नहीं होता

यहां देखें: जावास्क्रिप्ट मिलेचा

प्रश्न का पहला हिस्सा:

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

यह एक जावास्क्रिप्ट डिज़ाइन त्रुटि है, जो अब ठीक नहीं हो सकती। यह प्रकार नल होनी चाहिए, ऑब्जेक्ट प्रकार नहीं, या बिल्कुल नहीं है। वास्तविक वस्तुओं का पता लगाने और बग्स का स्रोत होने पर यह एक अतिरिक्त चेक (कभी-कभी भूल जाता है) की आवश्यकता होती है।

प्रश्न का दूसरा हिस्सा:

जाँच कर रहा है

if (object == null)
Do something

बराबर

if (!object)
Do something

दो चेक हमेशा इसके लिए छोड़कर दोनों झूठे हैं:

  • ऑब्जेक्ट अपरिभाषित या रिक्त है: दोनों सच्चे।

  • ऑब्जेक्ट आदिम है, और 0, "" , या झूठी: फर्स्ट चेक, दूसरा सत्य।

यदि वस्तु एक आदिम नहीं है, लेकिन एक वास्तविक वस्तु, जैसे कि new Number(0) , new String("") , या new Boolean(false) , तो दोनों चेक झूठे हैं।

इसलिए यदि 'ऑब्जेक्ट' को एक वास्तविक ऑब्जेक्ट का अर्थ समझा जाता है तो दोनों चेक हमेशा समान होते हैं। यदि प्राथमिकताएं अनुमति दी जाती हैं तो चेक 0, "" , और झूठे के लिए अलग हैं।

object==null जैसे मामलों में object==null , अनजाने परिणाम बग्स का एक स्रोत हो सकता है। == का उपयोग कभी भी अनुशंसित नहीं है, इसके बजाय === उपयोग करें।

प्रश्न का तीसरा हिस्सा:

और भी:

रिक्त और अपरिभाषित में क्या अंतर है?

जावास्क्रिप्ट में, एक अंतर यह है कि रिक्त प्रकार के ऑब्जेक्ट की है और अपरिभाषित प्रकार का अनिर्धारित है।

जावास्क्रिप्ट में, null==undefined सच है, और बराबर माना जाता है यदि प्रकार की उपेक्षा की जाती है उन्होंने फैसला क्यों किया, लेकिन 0, "" और झूठे समान नहीं हैं, मुझे नहीं पता। ऐसा लगता है कि एक मनमानी राय है

जावास्क्रिप्ट में, null===undefined नहीं है क्योंकि टाइप === में समान होना चाहिए।

वास्तविकता में, रिक्त और अपरिभाषित समान होते हैं, क्योंकि वे दोनों गैर अस्तित्व का प्रतिनिधित्व करते हैं। तो 0 करो, और उस बात के लिए भी, और शायद खाली कंटेनर [] और {} इतने सारे प्रकार की कुछ भी नहीं कीड़े के लिए एक नुस्खा है। सभी में एक प्रकार या कोई भी बेहतर नहीं है मैं संभव के रूप में कुछ के रूप में उपयोग करने की कोशिश करेंगे

'झूठी', 'सच्चा', और '!' उदाहरण के लिए, if(!x) और if(x) अकेले पर्याप्त हैं, तो आपको सच्चे और झूठे की ज़रूरत नहीं है।

एक घोषित var x प्रकार अनिर्धारित है यदि कोई मान नहीं दिया गया है, लेकिन यह समान होना चाहिए जैसा कि x बिल्कुल भी घोषित नहीं किया गया था। एक अन्य बग स्रोत एक खाली कुछ भी नहीं कंटेनर है तो इसे घोषित करना और इसे परिभाषित करना सबसे अच्छा है, जैसे कि var x=1

लोग इन सभी विभिन्न प्रकारों के बारे में जानने के लिए हलकों में गोल और गोल जा रहे हैं, लेकिन जटिल जटिल कपड़े में यह सब एक ही बात है। वास्तविकता है

 undefined===undeclared===null===0===""===[]==={}===nothing 

और शायद सभी को अपवाद फेंकना चाहिए।

 var x = null; 

एक्स शून्य के रूप में परिभाषित किया गया है

y परिभाषित नहीं है; // क्योंकि मैंने इसे परिभाषित नहीं किया है

 if (!x) 

शून्य का मूल्यांकन झूठी के रूप में किया गया है

रिक्त और अपरिभाषित करने का एक तरीका यह समझना है कि कहां से प्रत्येक होता है

निम्न स्थितियों में एक शून्य वापसी मान की अपेक्षा करें:

  • DOM से क्वेरी करने वाले तरीके

     console.log(window.document.getElementById("nonExistentElement")); //Prints: null 
  • एक अजाक्स अनुरोध से प्राप्त JSON प्रतिक्रियाएं

 { name: "Bob", address: null } 
  • RegEx.exec

  • नई कार्यक्षमता जो प्रवाह की स्थिति में है निम्नलिखित रिवर्स नल:

 var proto = Object.getPrototypeOf(Object.getPrototypeOf({})); // But this returns undefined: Object.getOwnPropertyDescriptor({}, "a"); 

गैर-अस्तित्व के अन्य सभी मामलों को अपरिभाषित (जैसा एक्सएक्स द्वारा नोट किया गया) द्वारा चिह्नित किया गया है। निम्न में से प्रत्येक प्रिंट "अपरिभाषित":

  var uninitalised; console.log(uninitalised); var obj = {}; console.log(obj.nonExistent); function missingParam(missing){ console.log(missing); } missingParam(); var arr = []; console.log(arr.pop()); 

बेशक, यदि आप लिखते हैं कि वे आरंभिक शुरुआत = शून्य; या फिर किसी विधि से शून्य प्राप्त करें तो आप अन्य स्थितियों में शून्य हो सकते हैं लेकिन यह बहुत स्पष्ट होना चाहिए।

एक तीसरा मामला तब होता है जब आप किसी वैरिएबल का उपयोग करना चाहते हैं, लेकिन आपको यह भी पता नहीं है कि यह घोषित कर दिया गया है। किसी संदर्भ त्रुटि से बचने के लिए उस मामले का उपयोग टाइप करें:

 if(typeof unknown !== "undefined"){ //use unknown } 

सारांश में जब आप DOM में हेरफेर कर रहे हैं, अजाक्स के साथ काम कर रहे हैं, या कुछ ईसीएमएस्क्रिप्ट 5 सुविधाओं का इस्तेमाल करते हुए निरर्थक जांच करें। अन्य सभी मामलों के लिए यह सख्त समानता के साथ अपरिभाषित होने के लिए सुरक्षित है:

 if(value === undefined){ // stuff } 

जावास्क्रिप्ट में कई भिन्न रिक्त जांच की तुलना:

http://jsfiddle.net/aaronhoffman/DdRHB/5/

 // Variables to test var myNull = null; var myObject = {}; var myStringEmpty = ""; var myStringWhiteSpace = " "; var myStringHello = "hello"; var myIntZero = 0; var myIntOne = 1; var myBoolTrue = true; var myBoolFalse = false; var myUndefined; ...trim... 

http://aaron-hoffman.blogspot.com/2013/04/javascript-null-checking-undefined-and.html

जावास्क्रिप्ट नल चेक तुलना चार्ट

शून्य और अपरिभाषित दोनों मूल्य समानता के लिए झूठी हैं (शून्य == अपरिभाषित): वे दोनों बुलीयन झूठे के लिए पतन वे समान ऑब्जेक्ट नहीं हैं (रिक्त! == अपरिभाषित)

अपरिभाषित वैश्विक ऑब्जेक्ट की एक संपत्ति है (ब्राउज़र में "विंडो"), लेकिन एक आदिम प्रकार है और एक ऑब्जेक्ट ही नहीं। यह आरंभिक चर के लिए डिफ़ॉल्ट मान है और रिटर्न स्टेटमेंट के बिना समाप्त होने वाले फ़ंक्शन हैं।

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

null एक वस्तु है इसका प्रकार शून्य है undefined एक वस्तु नहीं है; इसका प्रकार अपरिभाषित है

कुछ सटीक:

शून्य और अपरिभाषित दो अलग-अलग मान हैं एक नाम के लिए मूल्य की अनुपस्थिति का प्रतिनिधित्व करता है और दूसरा नाम का अभाव है।


if( o ) लिए निम्नानुसार होता है if क्या होता है:

कोष्ठकों में अभिव्यक्ति का मूल्यांकन किया जाता है, और फिर if कंस में अभिव्यक्ति के मूल्य को कोष्ठक में जोड़ता है – हमारे मामले में

जावास्क्रिप्ट में फाल्सी (जो झूठी को मजबूती मिलेगी) मान हैं: '', रिक्त, अपरिभाषित, 0, और गलत

इस पृष्ठ पर जावास्क्रिप्ट निश्चित गाइड से undefined और null बीच अंतर क्या है इसका उत्तर जोड़ने के लिए:

आप सिस्टम-स्तर, अप्रत्याशित या त्रुटि जैसी अनुपस्थिति का प्रतिनिधित्व करने के लिए undefined मान कर सकते हैं और प्रोग्राम-स्तर, सामान्य या मान की अनुपस्थित अनुपस्थिति का प्रतिनिधित्व करने के लिए। यदि आपको इन मूल्यों में से किसी को एक वैरिएबल या प्रॉपर्टी में असाइन करने की ज़रूरत होती है या फ़ंक्शन में इन मानों में से किसी एक को पास करने की आवश्यकता है, तो null लगभग हमेशा सही विकल्प है

निम्न फ़ंक्शन बताता है कि क्यों और अंतर को बाहर करने में सक्षम है:

 function test() { var myObj = {}; console.log(myObj.myProperty); myObj.myProperty = null; console.log(myObj.myProperty); } 

अगर आप कॉल करते हैं

 test(); 

आप मिल रहे हैं

अपरिभाषित

शून्य

पहला console.log(...) myProperty को myProperty से प्राप्त करने की कोशिश करता है, जबकि इसे अभी तक परिभाषित नहीं किया जाता है – इसलिए इसे वापस "अपरिभाषित" हो जाता है इसे myProperty करने के लिए निर्दिष्ट करने के बाद, दूसरा console.log(...) स्पष्ट रूप से "रिक्त" myProperty है क्योंकि myProperty मौजूद है, लेकिन इसमें मान को null गया है।

इस अंतर को जानने में सक्षम होने के लिए, जावास्क्रिप्ट null और undefined : जबकि null है – अन्य भाषाओं की तरह एक वस्तु, undefined एक वस्तु नहीं हो सकता क्योंकि कोई भी उदाहरण उपलब्ध नहीं है

उदाहरण के लिए window.someWeirdProperty अपरिभाषित है, इसलिए

"window.someWeirdProperty === null" मूल्यांकन तब गलत है जब

"window.someWeirdProperty === undefined" सही करने के लिए मूल्यांकन करता है

इसके अलावा जांच if (!o) false होने के लिए if (o == null) जाँच के समान नहीं है I

नल के बारे में अन्य मज़ेदार चीज, अपरिभाषित की तुलना में, यह बढ़ी जा सकती है

 x = undefined x++ y = null y++ console.log(x) // NaN console.log(y) // 0 

निकोलस सी। जैकस द्वारा "ऑब्जेक्ट-ओरिएंटेड जावास्क्रिप्ट के सिद्धांत" से

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

जैकस, निकोलस सी। (2014-02-07) ऑब्जेक्ट-ओरिएंटेड जावास्क्रिप्ट के सिद्धांत (किंडल स्थान 226-227) कोई स्टार्च प्रेस नहीं किंडल संस्करण।

ने कहा कि:

 var game = null; //typeof(game) is "object" game.score = 100;//null is not an object, what the heck!? game instanceof Object; //false, so it's not an instance but it's type is object //let's make this primitive variable an object; game = {}; typeof(game);//it is an object game instanceof Object; //true, yay!!! game.score = 100; 

अपरिभाषित केस:

 var score; //at this point 'score' is undefined typeof(score); //'undefined' var score.player = "felix"; //'undefined' is not an object score instanceof Object; //false, oh I already knew that. 

'रिक्त' के बारे में सोचने का सबसे अच्छा तरीका यह है कि इस तरह की अवधारणा को डेटाबेस में कैसे प्रयोग किया जाता है, जहां यह इंगित करता है कि एक फ़ील्ड में "कोई भी मूल्य नहीं है"।

  • हां, आइटम का मूल्य ज्ञात है; यह 'परिभाषित' है। इसे आरंभ किया गया है।
  • आइटम का मान है: "कोई मूल्य नहीं है।"

यह प्रोग्राम लिखने के लिए एक बहुत ही उपयोगी तकनीक है जो अधिक आसानी से डिबग किए जाते हैं। एक 'अपरिभाषित' चर एक बग का परिणाम हो सकता है … (आप कैसे जानते होंगे?) … लेकिन यदि चर में मूल्य 'नल' होता है, तो आप जानते हैं कि "इस कार्यक्रम में कहीं, किसी को, 'अशक्त।' "इसलिए, मैं सुझाव देता हूं, जब आपको किसी वैरिएबल के मूल्य से छुटकारा पाना होगा, तो" हटाएं "न करें … इसे 'रिक्त' पर सेट करें। पुराने मूल्य अनाथ हो जाएगा और जल्द ही कचरा एकत्र किया जाएगा; नया मान है, "कोई मूल्य नहीं है (अब)।" दोनों ही मामलों में, चर का राज्य निश्चित है: "यह जाहिर है, जानबूझकर, वह रास्ता मिला।"

  1. अपरिभाषित का अर्थ है कि एक चर घोषित किया गया है लेकिन इसे किसी भी मूल्य को नहीं दिया गया है जबकि नल को "कोई मान" का प्रतिनिधित्व करने वाले किसी चर को सौंपा नहीं जा सकता। (नल एक असाइनमेंट ऑपरेटर है)

2.निर्धारित एक ही प्रकार है जबकि नल एक वस्तु है।

3. जावास्क्रिप्ट अपरिवर्तित में किसी भी अनअसाइन्ड वैरिएबल को खुद आरंभ कर सकता है, लेकिन यह किसी चर के वैल्यू को कभी भी सेट नहीं कर सकता है। इसे प्रोग्रामैटिक रूप से किया जाना चाहिए

जावास्क्रिप्ट null में एक object प्रकार नहीं है यह एक primitave प्रकार है।

अंतर क्या है? अनिर्धारित एक सूचक को संदर्भित करता है जिसे सेट नहीं किया गया है। नल उदाहरण के लिए रिक्त सूचक को संदर्भित करता है, कुछ ने मैन्युअल रूप से एक प्रकार की null होने के लिए एक चर सेट किया है

इसे देखो:

  <script> function f(a){ alert(typeof(a)); if (a==null) alert('null'); a?alert(true):alert(false); } </script> //return: <button onclick="f()">nothing</button> //undefined null false <button onclick="f(null)">null</button> //object null false <button onclick="f('')">empty</button> //string false <button onclick="f(0)">zero</button> //number false <button onclick="f(1)">int</button> //number true <button onclick="f('x')">str</button> //string true